3

私は Satellizer を使用して Facebook ログインを行っています。Facebook がすべてのユーザー情報を返さないことを除けば、うまく機能します。スコープ email と public_profile に含めると、名前と ID だけが取得されますが、メールは取得されません。

これがクライアント側の FB 構成です。ご覧のとおり、email と public_profile を要求しています。

facebook: {
                clientId: 'xxxxxxx',
                url: '/api/public/authentication/facebook',
                authorizationEndpoint: 'https://www.facebook.com/v2.3/dialog/oauth',
                redirectUri: window.location.protocol + '//' + window.location.host + '/',  //  window.location.origin || window.location.protocol + '//' + window.location.host + '/'
                scope: 'email,public_profile',
                scopeDelimiter: ',',
                requiredUrlParams: ['display', 'scope'],
                display: 'popup',
                type: '2.0',
                popupOptions: { width: 481, height: 269 }
            },

サーバー上で、これは:

request.get( { url: graphApiUrl, qs: accessToken, json: true }, function( err, response, profile ) { ....

次のように、プロファイルに id と name のみを指定します。

profile = Object {name: Denis, id: xxx}

何が間違っているのか、なぜメールやアバターが届かないのかわかりません...

ありがとう。

4

3 に答える 3

0

サテライザーの作者がここで説明しているように

https://github.com/sahat/satellizer/issues/116

スコープ プロパティの形式は、文字列の配列である必要があります。したがって、あなたのものは次のようになります。

スコープ: ['email', 'public_profile']

それが役立つことを願っています!

ジョエル

于 2015-08-14T11:16:12.453 に答える
0

Facebook からメールを受け取るには、アカウントのメールが公開に設定されていることを確認する必要があります。そうしないと、返信されません。

于 2016-08-22T08:03:03.040 に答える