【问题标题】:Android Facebook SDK AcccessToken problemsAndroid Facebook SDK AccessToken 问题
【发布时间】:2016-05-31 20:32:57
【问题描述】:

我尝试使用AccessToken 获取用户email,这是我从Facebook SDK 获得的

  1. 如果我使用Graph API ExplorerAccessToken,我可以得到idnameemail,不管我使用浏览器还是OkHttp

    "https://graph.facebook.com/" + user_id + "?fields=email,name&access_token=" + access_token_from_graph_explorer

我得到这样的回应:

 {
      "email": "mail@com",
      "name": "John Doe",
      "id": "4545"
}

如果我使用AccessToken.getCurrentAccessToken().getToken() 方法获取的token,我不会在JSONObject 中得到email

  1. 使用Graph Explorer 我可以看到我的id。我试着用这种方式提出请求:

"https://graph.facebook.com/me?fields=email,name&access_token="

还有这个:

"https://graph.facebook.com/" + id + "?fields=email,name&access_token="

在第二个变体中,我使用了"Unsupported get request. Object with ID 'xxxxxxxxxxx' does not exist, cannot be loaded due to missing permissions...,同时使用了我的id。当我尝试使用另一个userid 时,我仍然没有得到email

Bundle bundle = new Bundle();
            bundle.putString("fields", "email,name");
            new GraphRequest(
                    AccessToken.getCurrentAccessToken(),
                    "me",
                    bundle,
                    HttpMethod.GET,
                    new GraphRequest.Callback() {
                        public void onCompleted(GraphResponse response) {
                            System.out.println("data = " + response.toString());
                        }
                    }
            ).executeAsync();

有了这个变种,我也没有达到email

我很困惑。告诉我,我怎样才能找回用户的电子邮件。

3.登录后我尝试:

public void onSuccess(LoginResult loginResult) {
            System.out.println("succses =" + loginResult.getAccessToken().getToken());
            accessToken = loginResult.getAccessToken();

            GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject user, GraphResponse graphResponse) {
                    Log.d("TAG", user.optString("email"));
                    Log.d("TAG", user.optString("name"));
                    Log.d("TAG", user.optString("id"));
                    init();
                }
            }).executeAsync();
        }

但我没有看到TAG 的电子邮件 附言graph explorer 中的所有权限均已开启。

【问题讨论】:

  • 在stackoverflow上试试这个答案...我遇到了同样的问题...stackoverflow.com/a/33412596
  • @ExceptionLover 是的,谢谢。这有帮助。
  • 请接受我的回答...!!

标签: android facebook-sdk-4.0


【解决方案1】:

最高投票的答案对我不起作用,电子邮件总是空的。我在Stackoverflow找到答案

LoginManager.getInstance().registerCallback(mCallbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object,GraphResponse response) {

                            JSONObject json = response.getJSONObject();
                            try {
                                if(json != null){
                                    String text = json.getString("email");
                                    Log.d("email",text);

                                }

                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
                        }
                    });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,link,email,picture");
                    request.setParameters(parameters);
                    request.executeAsync();

                }

                @Override
                public void onCancel() {
                    // App code
                }

                @Override
                public void onError(FacebookException exception) {
                    // App code
                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2012-12-05
    • 2015-05-31
    相关资源
    最近更新 更多