読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

複数のアプリで1つのアカウントデータベースを使うその2

以前に、remote DDP serverのデータベースでユーザー管理を行う方法を書きました。

複数のアプリで1つのアカウントデータベースを使う

この記事でも書いた通り、OAuthなどcallback URLを使う認証の場合はうまくいかないので、以下のように考えてみました。

1. メインアプリサーバーで、ユーザー情報を_idでpublishできるようにしておく。

2.サブアプリでの認証時にサブアプリサーバーでメインアプリにアカウントがあることを確認する。

確認できなければ作成しない。確認できたらアカウントにメインアプリのアカウントの_idを紐付けする(mainId)。

3. サブアプリのクライアントに以下のコードを入れる。

share.remote = DDP.connect 'http://mainApp.meteor.com/'
share.users = new Meteor.Collection 'users', share.remote
share.user = ->
    share.users.findOne()

Tracker.autorun ->
    user = Meteor.user()
    share.remote.subscribe 'remoteuser', user.mainId

で、後は、Meteor.user, Meteor.usersの代わりにshare.user, share.usersを使います。

如何でしょう?
実際に書いたコードはちょっと違ったことをしているので上記アイデア自体はまだ試していませんが、うまく行きそうな気がしています。