Meteorのaccounts関連のパッケージははアカウント管理にソーシャルサービス連携をサポートしています。
ユーザーにソーシャルサービスアカウントでアプリにサインインしてもらい時には、
のいずれかまたは複数のパッケージを追加し、UI用にaccounts-uiパッケージを追加します。
そして、HTMLに
{{loginButtons}}
を追加するだけです。
{{loginButtons}}にサインイン用のボタンが現れます。最初はソーシャルサービスの設定を促すボタンが表示されますので,必要な情報(consumer key, consumer secretなど)を入力するとデータベースに保存され、ボタンはサインイン用に変わります。
サービスの情報はAccounts.loginServiceConfigurationというコレクションに保存されます。
例えば、Twitterのconsumer key, consumer secretを取り出すには、
service = Accounts.loginServiceConfiguration.findOne service: 'twitter' console.log service.consumerKey, service.secret
ユーザーがソーシャルサービスを使ってサインインすると、access token, access token secretは、Meteor.usersコレクションに保存されます。
なので、例えば、NPMのnode-twitterパッケージを使ってツイートしようと思うと、以下のようになります。
# tweets status. # user: document in Meteor.users # status: string # callback: callback after tweet tweet = (user, status, callback) -> return unless user? callback ?= (data) -> console.log data if data.errors? service = Accounts.loginServiceConfiguration.findOne service: 'twitter' if service? and user.services?.twitter? new Twitter( consumer_key: service.consumerKey consumer_secret: service.secret access_token_key: user.services.twitter.accessToken access_token_secret: user.services.twitter.accessTokenSecret ).updateStatus status, callback
OAuth1.0aの複雑なコードは不要です。(必要だとしてもnode-twitterパッケージ使えばいいのですが)
開発者にAPIを用意して呼び出しは開発者に任せるような感じではなく、パッケージを追加すると、ソーシャルサービス関連のデータベースを作り、UIボタンで設定をするとそこに保存するような能動的なパッケージ作りがMeteorの特長のようです。