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 和名称,但不包含电子邮件

个人资料有电子邮件 - 我正在通过电子邮件进行身份验证。

我正在使用 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 回答
0

也许我们面临同样的问题,试试这个:

Bundle params=new Bundle();
params.putString("fields","id,name,email,verified"); //must specify the "fields" param, otherwise FB always return id and name only.
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/me",
    params,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
        //do something...
        }
    }
).executeAsync();
于 2015-09-11T03:26:29.793 回答