即使传递了访问令牌,GraphRequest也不会返回详细信息

时间:2016-09-20 18:54:53

标签: facebook-graph-api facebook-sdk-4.0

我正在尝试使用Facebook Graph API获取用户详细信息,但我没有得到预期的结果。为了让自己更清楚,我正在陈述我所遵循的步骤。

  1. 将Facebook API与Android应用集成。
  2. 设置所需详细信息的权限。
  3. 申请令牌。
  4. 再次接收令牌后,使用GraphRequest请求详细信息。 但是没有调用GraphRequest中的onCompleted方法。
  5. 这是我的代码段。

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(LoginActivity.this, loginResult.getAccessToken().toString(), Toast.LENGTH_LONG).show();
                Log.d("test", loginResult.getAccessToken().toString());
                GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        Log.d("response", response.toString());
                    }
                });
            }
      }
    

    使用密钥&#34;响应&#34;的日志id没有被打印,显然GrapRequest没有调用onComplete方法。 在此先感谢。

1 个答案:

答案 0 :(得分:0)

上面的代码没有执行GraphRequest,因为你没有在graphRequest对象上调用executeAsync()方法。

<强> graphRequest.executeAsync(); //您必须将此行添加到代码中

修改后,您的代码看起来像

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(LoginActivity.this, loginResult.getAccessToken().toString(), Toast.LENGTH_LONG).show();
                Log.d("test", loginResult.getAccessToken().toString());
                GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        Log.d("response", response.toString());
                    }
                });

             graphRequest.executeAsync(); // You have to add this line to your code

            }
      }