2011-06-13 53 views
2

我正在使用facebook版本的facebook圖形API。爲了處理登錄,我們做一個簡單的授權對話框,如果一切正常,它將調用onComplete。但問題是我需要用戶ID,所以我需要製作一個連續的facebook.request("me")來抓取它。有沒有辦法在授權邏輯中獲取用戶ID?捆綁值只返回acess_token和expire_time抓住當前的第一個電話的facebook ID

facebook.authorize(this, permissions, new DialogListener() { 
     @Override 
     public void onComplete(Bundle values) { 
      login(); 
     } 

     @Override 
     public void onFacebookError(FacebookError error) {} 

     @Override 
     public void onError(DialogError e) {} 

     @Override 
     public void onCancel() {} 
    }); 

回答

1

好吧,一些谷歌上搜索後,我發現關於一些的access_token的信息。一個很酷的部分是它包含一個標識用戶ID的子字符串。訪問令牌具有以下格式:

116122545078207|2.1vGZASUSFMHeMVgQ_9P60Q__.3600.1272535200-500880518|QXlU1XfJR1mMagHLPtaMjJzFZp4. 

識別所述用戶ID是從第二|到第一左-,所以令牌上面的訪問的用戶ID是在部分:500880518

搶它,只是做:

public void onComplete(Bundle values) { 
    String token = values.getString("access_token"); 
    String[] firstPart = token.split("\\|"); 
    String[] subPart = firstPart[1].split("-"); 
    long id = Long.parseLong(subPart[subPart.length - 1]); 
} 
0

簡而言之,您必須爲此調用user/me。但是您可以在授權完成調用之後將其序列化,因爲爲了從Facebook獲得任何不是公開的信息,您需要令牌並授權僅返回認證信息。你所要求的就像是想要通過呼叫牆上貼子來獲得朋友列表..這些呼叫是不相互關聯的。