2016-09-20 54 views
0

我想通过使用Facebook Graph API获取用户详细信息,但我没有得到预期的结果。为了让自己更清楚,我说明了我所遵循的步骤。即使通过访问令牌,GraphRequest也不返回详细信息

  1. 集成的Facebook API与Android应用程序。
  2. 设置权限以获取所需的详细信息。
  3. 请求令牌。
  4. 使用GraphRequest再次接收到令牌后请求详细信息。 但是GraphRequest中的onCompleted方法没有被调用。

这是我的代码片段。

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()); 
       } 
      }); 
     } 
    } 

与键“响应”ID没有得到打印的日志,清除GrapRequest不调用onComplete方法。 在此先感谢。

回答

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 

      } 
     } 
+0

欣赏响应,问题解决了:) –

相关问题