在第一次通话时获取当前的Facebook ID

时间:2011-06-13 22:30:24

标签: android facebook facebook-graph-api

我正在使用facebook图形API的Android版本。为了处理登录,我们做了一个简单的授权对话框,如果一切正常,它将调用onComplete。但问题是我需要用户ID,因此我需要创建一个顺序facebook.request("me")来获取它。有没有办法在授权逻辑中获取用户ID? bundle值仅返回acess_token和expire_time

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

2 个答案:

答案 0 :(得分: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]);
}

答案 1 :(得分:0)

根本就没有......你必须打电话给用户/我。但是你可以在授权完成调用之后顺序完成它,因为为了从facebook获取任何不公开的信息,你需要令牌和授权只返回身份验证信息。你问的是想要通过呼叫墙贴来获取好友列表..这些电话没有互联。