android - 检索 Android Facebook 企业 token

标签 android facebook-graph-api android-facebook

我正在尝试从我已经从 ME 请求中获得的 GraphUser 中检索 token_for_business。每次都返回 null。我能够从 ME 请求中成功检索到许多其他信息。例如:

public String getEmail() {
    if (Session.getActiveSession().getPermissions().contains("email")) {
        return (String) mUser.getProperty("email");
    } else {
        return "";
    }
}

我已多次验证 Facebook 控制面板已设置为使用商业 token 。我知道我可以尝试直接查询商务管理平台 API,但是我已经链接了几个 API 调用并且更愿意使用我应该已经拥有的数据。

public String getTokenForBusiness() {
    return (String) mUser.getProperty("token_for_business");
}

documentation表示此属性存在,因为用户已登录到应用程序。当然,只有在 Session 状态被识别为打开后才会发出 ME 请求,因此据我了解,用户已登录。

是否有我缺少的权限?使用此属性是否有任何其他规定?

更新:我尝试使用 Business Mapping API。它的工作原理是将该应用程序识别为我们业务的有效部分,但它不包含我需要的 token_for_business。所以这条路行不通。我还尝试在整个登录过程完成后访问 token ,以确保在完成某些操作之前我没有调用它,但是我仍然得到 token 的空值。我还尝试使用此请求:

/* make the API call */
new Request(
    session,
    "/{user-id}",
    null,
    HttpMethod.GET,
    new Request.Callback() {
        public void onCompleted(Response response) {
            Log.i("TFB", response.toString());
            Log.i("TFB", (String) response.getGraphObject().getProperty("token_for_business") + "");
        }
    }
).executeAsync();

当然,我用实际用户 ID 替换了 {user-id}。此响应包含我期望的信息,不包括 token_for_business。

最佳答案

所以这不是一个理想的解决方案,但在尝试了 Graph API Explorer 之后, 我想到了这个。

Bundle bundle = new Bundle();
bundle.putString("fields", "token_for_business");

new Request(Session.getActiveSession(), "/me/", bundle, HttpMethod.GET, new Request.Callback() {
            @Override
            public void onCompleted(final Response response) {
                if (response != null) {
                     GraphUser user = response.getGraphObjectAs(GraphUser.class);
                     Log.i("TFB", user.getProperty("token_for_business"));
                }
            }
        }).executeAsync();

此解决方案的问题是您需要将 GraphUser 的所有方面添加到“fields”参数。例如,如果您需要知道用户的名字和性别,则相应的包将包含:

bundle.putString("fields", "token_for_business,first_name,gender");

因此,对于不介意额外调用的人来说,最好将 token_for_business 与 ME 请求分开,以防 Facebook 更新他们的 SDK/API 并在未来某个时候破坏此解决方案。

关于android - 检索 Android Facebook 企业 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282673/

相关文章:

java - Facebook 登录后将 Activity 重定向到 Frontpage Activity

Android timepicker 对话框不返回前面的零

android - 使用 Android 在 friend /粉丝页面上上传照片

c# - Facebook API 入门

php - Facebook API FQL 多查询获取 Actor 姓名和 ID

Android Facebook SDK 降低应用性能

android - 如何在facebook android开发中使用pass bundle参数进行分页

java - 如何暂停和恢复倒计时器?

java - Android:字符在 EditText 中离开倒计时

android - 使用FileProvider共享/data/user/0/目录中的音频文件