2017-06-01 71 views
0

我試圖從他的用戶ID獲取用戶的名稱。 上this鏈接,他們說,我們可以從這樣一個簡單的HTTP請求做到這一點:Facebook Graph request用戶ID的Android名稱

http://graph.facebook.com/4 

但似乎這種方法已經過時了,因爲我不能得到任何東西,因爲:

"An access token is requir…o request this resource." 

無論如何,我關於使用Android上的圖形API及其文檔試過,我做了這樣的:

GraphRequestAsyncTask request1 = new GraphRequest(
     AccessToken.getCurrentAccessToken(), 
     "/"+id1+"/name", 
     null, 
     HttpMethod.GET, 

     new GraphRequest.Callback() { 
      public void onCompleted(GraphResponse response) { 
       /* handle the result */ 
      } 
     } 
    ).executeAsync(); 
    name1.setText(request1.toString()); 

但在name1的TextView我收到一條消息,告訴我

{RequestAsyncTask: 
    connection:null,requests:[{Request: 
    accesToken:{AccessToken 
     token:ACCESS_TOKEN_REMOVED permissions: 
     [public_profile]}, 
     graphPath:/100017723671435/name, graphObject: null, 
     httpMethod:Get, 
     parameters:Bundle[{}]}]} 

我真的不知道該怎麼辦,我有一堆的Facebook ID的對我的數據庫,我只是想從ID得到名稱,就顯示它屏幕。

該應用程序的當前用戶不是我想要獲取該信息的配置文件!

編輯:看來我誤解了/*handle the result*/評論,我做這行這樣的:

name1.setText(response.toString()); 

但我還有一個錯誤在我的TextView:

{Response: 
    responseCode:400, 
    graphObject:null, 
    error: { HttpStatus:400, 
      errorCode: 2500, 
      errorType: OAuthException, 
      errorMessage: Unknown path components: /first_name }} 

這樣看來我不不正確使用圖形路徑。我仍在尋找文檔和谷歌,如果我找到答案,我會給代碼!

+1

'first_name'是一個不是邊的字段。 https://developers.facebook.com/docs/graph-api/using-graph-api/#fields – CBroe

回答

0

確保您使用讀取權限登錄。 如果你登錄,你可以嘗試使用:

GraphRequest.Callback gCallback = new GraphRequest.Callback() { 
     @Override 
     public void onCompleted(GraphResponse response) { 
      Log.d(TAG, "onCompleted: "); 
      if (response != null && response.getJSONObject() != null && response.getJSONObject().has("first_name")) 
      { 
       try { 
        name1.setText(response.getJSONObject().getString("first_name")); 
       } catch (JSONException e) { 
        Log.e(TAG, "onCompleted: ",e); 
       } 
      } 
     } 
    }; 
    new GraphRequest(AccessToken.getCurrentAccessToken(),"/me?fields=id,name,gender,email,first_name,last_name", null,HttpMethod.GET, gCallback).executeAsync(); 

如果你有一個登錄的問題,也許this link可以幫助你。

+0

好的,謝謝你現在的作品!我真的不理解圖形文檔,所以感謝像這樣解釋我:D –

相關問題