2011-06-13 65 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获得任何不是公开的信息,您需要令牌并授权仅返回认证信息。你所要求的就像是想要通过呼叫墙上贴子来获得朋友列表..这些呼叫是不相互关联的。