【问题标题】:Facebook API: Poll available permissions from Page Access TokenFacebook API:从页面访问令牌轮询可用权限
【发布时间】:2013-04-24 15:53:57
【问题描述】:

给定一个页面访问令牌,我如何轮询 Facebook 的 API 以确定我的应用是否仍可以在页面的时间线上发布?如果我在用户的上下文中工作,这将很容易。我会使用 User Access Token 并调用此端点:

/me/permissions?access_token={user_access_token}

{
  "data":[{
    "installed":1,
    "email":1,
    "publish_stream":1, // Yay! I can still publish to user's Timeline
    "bookmarked":1
  }]
}

但是,页面访问令牌不允许使用 /me/permissions 端点:

/me/permissions?access_token={page_access_token}
{
  "error":{
    "message":"(#3) App must be on whitelist",
    "type":"OAuthException",
    "code":3
  }
}

如果我有用户的访问令牌,那么我可以同时检查 publish_streamma​​nage_pages,如果用户授予了这两个权限,那么我的应用可以发布到用户是管理员的任何页面。但不幸的是,在我的场景中,我没有用户访问令牌。我只有 Page Access Token 存储供离线使用。

知道如何使用页面访问令牌来确定我的应用是否仍可以发布到页面的时间轴?

【问题讨论】:

    标签: facebook facebook-graph-api permissions


    【解决方案1】:

    您可以使用debug tool 查看与之关联的信息。

    引自documentation

    要使用 API,您可以使用两个参数向 graph.facebook.com/debug_token 发出 HTTP GET 请求:

    https://graph.facebook.com/debug_token?input_token=INPUT_TOKEN&access_token=ACCESS_TOKEN

    input_token:要调试的访问令牌
    access_token:您的应用访问令牌或来自应用开发者的有效用户访问令牌。

    【讨论】:

    • 这正是我所需要的。谢谢。
    【解决方案2】:

    仅使用页面访问令牌无法查看页面访问令牌权限。

    访问 /debug_token/,或在页面访问令牌上使用 Facebook 调试器 (https://developers.facebook.com/tools/debug/) 只会返回发布它的用户令牌的权限(截至 2014 年 5 月 7 日测试)。

    检查页面令牌权限的唯一方法是轮询 /me/accounts/(需要页面管理员的用户令牌)并查看“perms”字段。或者只是测试请求。

    在页面令牌上验证从 /debug_token/ 返回的“manage_pages”和“stream_publish”是不充分的检查,因为用户的页面管理员级别可能会限制他们的活动。

    【讨论】:

    • 看看@Anvesh Saxana 的回答。效果很好。
    • @JohnnyO 谢谢,但我确实尝试过,当我将它与页面令牌一起使用时,我取回了发布页面令牌的用户令牌的权限。您能否粘贴一个与页面令牌一起使用时从请求中获得的输出示例?
    • 这是一个示例响应。我稍微简化了标题并更改了一些 ID: HTTP/1.1 200 OK Content-Type: text/javascript; charset=UTF-8 内容长度:293 {"data":{"app_id":123456789,"is_valid":true,"profile_id":123456789,"application":"Sample App","user_id":1111111," issue_at":1368654391,"expires_at":0,"scopes":["public_profile","basic_info","email","share_item","publish_stream","manage_pages","publish_actions","user_friends"]}}
    • 部分混淆可能是您需要查看用户的权限以确定您是否被授予页面权限。例如,如果用户已授予您 manage_pages 和 publish_stream,那么您可以使用页面访问令牌代表页面发布。
    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2012-07-24
    • 2012-06-12
    相关资源
    最近更新 更多