SO社区,
我一直试图将应用程序自动发布到我的Facebook页面。
这是我采取的步骤:
A)我授权我的所有Facebook页面申请并使用
授予offline_access,publish_stream和manage_pages权限https://www.facebook.com/dialog/oauth?client_id=<app_id>&redirect_uri=<url>&scope=read_stream,publish_stream,manage_pages,offline_access,publish_actions
B)我为具有这些权限的应用程序请求了访问令牌
https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=<app_id>&client_secret=<app_secure_key>&scope=manage_pages,offline_access,publish_stream
C)我现在想要获取页面的访问令牌,以便能够使用
完成最后的帖子https://graph.facebook.com/feed?<page_access_token>&message=test&id=<page_id>&method=post
然而,获取page_access_token是我失败的地方
这是我正在尝试的电话
https://graph.facebook.com/<page_id>?fields=access_token&access_token=<app_access_token>
但不是页面的访问令牌,我只是回来了:
{
"id": "<page_id>"
}
任何人都有任何见解我缺少的东西。
/托马斯
答案 0 :(得分:3)
我们在过去的几天里成功地完成了这项工作。这是一个总结。如果我在必要时详细说明它,我会道歉,但你做过的几件事似乎有点不对劲。总结一下你的步骤:
如果您正在执行 step_A 更正,这看起来似乎没有问题,那么在结尾处您将收到一个CODE(而不是最终访问令牌)。这将是使用您在步骤A中发送的重定向网址的重定向,因此请确保您的服务器正在接受对此处指定的 redirectURL 的请求。它将采用http://redirectURL?code=A_CODE_GENERATED_BY_SERVER
的形式,因此使用params [code]可以获得代码。
Step_B可能是你稍微偏离的地方。您已将step_A中的 CODE 发送回服务器。我看到您再次设置了scope
参数,现在没有必要(在 step_A 中完成)。 Step_B 您的请求网址应如下
https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
这次Facebook使用redirectURL发回Response
而不是。如果您拥有正确的 Step_B 请求URI,则可以将其粘贴到浏览器位置栏中,响应将在浏览器中呈现。您可以使用 HTTPBuilder (这就是我正在使用的)并捕获此响应正文。它的格式为access_token=<really_big_string>&expires=<time_to_live>
。无论你喜欢哪种方式解析这个回应。
这也是一个access_token(我们称之为access_token_uno
),我想你可以用这个做一些事情。我自己没有尝试过,所以我们继续 Step_C 。我想你已经知道了你的PageID
。您必须使用表单
https://graph.facebook.com/<PageID>?fields=access_token&access_token=<access_token_uno>
响应将是以下形式的JSON块:
{
"access_token": <required_page_access_token>,
"id": <PageID>
}
解析JSON块,你就完成了。
要记住的一个小细节:redirectURL必须在 Step_A 和 Step_B 中保持不变,否则事情就会失败。此外,我还没有尝试使用offline_access
权限,但即使是这样,我也不认为上述步骤会发生变化。
答案 1 :(得分:0)
您需要为具有该页面管理权限的用户获取https://graph.facebook.com/ {userid} / accounts。在里面你应该找到页面的access_token。
http://developers.facebook.com/docs/authentication/#app-login