1

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>"
}

任何人都知道我缺少什么来获得 .

/托马斯

4

2 回答 2

3

在过去的几天里,我们刚刚设法让这个工作正常进行。这是一个摘要。如果我对它进行了不必要的详细说明,我深表歉意,但是您所做的一些事情似乎有些错误。总结一下你的步骤:

如果您正在执行step_A正确,从 URL 的外观来看似乎没问题,那么在它的最后您将收到一个 CODE(不是最终的访问令牌)。这将是使用您在步骤 A 中发送的重定向 URL 进行的重定向,因此请确保您的服务器正在接受对那里指定的重定向URL 的请求。它将采用这种形式http://redirectURL?code=A_CODE_GENERATED_BY_SERVER,因此 params[code] 应该可以为您提供 CODE。

Step_B 可能是您稍微偏离的地方。您已将代码从 step_A 发送回服务器。我看到您scope再次设置了一个现在不需要的参数(它是在step_A中完成的)。Step_B您的请求 URL 应如下所示

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 发回了一个Response 使用重定向 URL 的消息。如果您有正确的Step_B请求 URI,您可以将其粘贴到浏览器位置栏中,响应将呈现在您的浏览器本身中。您可以使用HTTPBuilder(这就是我正在使用的)并捕获此响应正文。它的形式是access_token=<really_big_string>&expires=<time_to_live>. 以您喜欢的方式解析此响应。

这也是一个 access_token (我们称之为access_token_uno),我想你可以使用它做一些事情。我自己还没有尝试过,所以我们继续Step_C。我想你已经知道你的PageID. 您必须以表单的 URL 将 access_token_uno 发送回 Facebook

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_AStep_B中保持不变,否则事情会失败。另外,我还没有尝试过offline_access许可,但我认为即使是这种情况,上述步骤也不会改变。

于 2011-10-12T17:16:50.203 回答
0

You need to get https://graph.facebook.com/{userid}/accounts for a user with administrative rights to the page. Inside that you should find the access_token for the page.

http://developers.facebook.com/docs/authentication/#app-login

于 2011-09-21T22:26:11.177 回答