2

次のコードを使用して、ユーザーの電子メールを取得しています。

    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
                          // Obtaining 
                        }
                    }).executeAsync();

以下は、デバッガーを介してチェックされます。

  • AccessToken インスタンスには、権限「email」と「public_profile」が含まれています
  • AccessToken インスタンスが拒否された権限セットが空です
  • 結果の JSONObject には、ユーザー ID と名前のみが含まれますが、電子メールは含まれません

Profile has email — メールで認証しています。

Facebook SDK 4.5 を使用しています

編集:直接 HTTP グラフ API 呼び出しを介した要求は、電子メールを返します。しかし、Android SDK はそうではありません。

修正方法は?

4

3 に答える 3

2

のパラメータの一部として「メール」を送信する必要がありますGraphRequest

GraphRequest request = GraphRequest.newMeRequest(
                            loginResult.getAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(
                                        JSONObject object,
                                        GraphResponse response) {
                                }
                            });

Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync();
于 2015-12-14T14:27:19.450 に答える
1

Facebook経由でサインインするときに、ユーザーはメールのアクセス許可を指定できないと思います。そのため、期待しても、メールアドレスを取得できない場合があります。

于 2015-08-23T23:22:28.453 に答える