11

ユーザーがFacebookを使用してサインオンできるMeteorアプリを作成しました。これを行うために、私はaccounts-uiおよびaccounts-facebookパッケージを使用しています。これは正常に機能します。

サインオンしたユーザーの電子メールアドレスを取得するにはどうすればよいですか?これには特別な許可が必要であることを理解しているのでemail、Facebook開発者サイトのアプリ設定に「ユーザーと友達の許可」として追加しました。Account.ui.configMeteorのドキュメントに従って、私も次のように設定しました。

Accounts.ui.config({
  requestPermissions: {
    facebook: ['email'],
  },
  passwordSignupFields: 'USERNAME_AND_EMAIL'
});

予想どおり、私のアプリのユーザーがFacebookの使用にサインオンすると、メールアドレスを共有するように正しく要求されます。しかし、どうすればそれを取得できますか?ユーザードキュメントには_idとのみが含まれprofile.nameます。

4

2 に答える 2

9

Facebookユーザーの電子メールアドレスはに保存されます[userDocument].services.facebook.email。これはクライアントに公開されませんが、サーバーから、またはとを使用してクライアントからアクセスできMeteor.methodsますMeteor.call

于 2012-12-20T04:30:00.030 に答える
0

これにより、Facebookプロファイル情報がクライアント側のユーザーオブジェクトに追加されます。

Accounts.onCreateUser (options, user) ->    

    if options.profile
        user.profile = options.profile

        # get profile data from Facebook
        result = Meteor.http.get "https://graph.facebook.com/me", {
                  params: access_token: user.services.facebook.accessToken} 

        if  !result.error && result.data
            #if successfully obtained facebook profile, save it off
            #the user can access the profile object on the client
            user.profile.facebook = result.data;

    return user

サーバー側では、facebook.accesstokenにアクセスできます...したがって、これを使用して完全なFB情報を取得し、クライアントユーザーオブジェクトに保存します。

コンソールでMeteor.user()にpingを実行して、FB情報を取得します。

クライアントにFB情報を表示するという点で、これが正確にベストプラクティスであるとは思わないでください。

于 2012-12-22T09:19:26.093 に答える