Facebook App:发布到页面现在因“发生未知错误”/ OAuthException而失败

时间:2012-10-11 09:46:35

标签: facebook-graph-api oauth facebook-php-sdk facebook-apps

我有一个应用程序将每日状态发布到页面墙,状态将作为应用程序发布(请参阅http://facebook.com/fragrantheart)。我的应用程序是“Fragrant Heart Daily Meditations”,正如你所看到的,已经很愉快地发布了很多年了。 但是,现在,当它发布时,我收到错误:

 [message] => An unknown error has occurred.
 [type] => OAuthException
 [code] => 1

这是我在服务器上运行的代码(PHP api):

$facebook = new Facebook(array('appId'=>'148279321865482', 'secret'=>'XXXXXX', 'cookie'=>false));
$target_id = '124924677541618'; // Fragrant Heart Meditation Page
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>$msg));

根据我的阅读,不需要access_token,因为该页面已授予我的应用publish_stream权限。

最近会发生什么变化导致此错误?代码没有改变。

我还尝试了服务器端身份验证流程来获取访问令牌,当通过调试器运行该令牌时,我得到:

App ID:  148279321865482 : Fragrant Heart Daily Meditations
User ID: 100001170589484 : Elisabeth Blaikie
Issued:  1289470487 (over a year ago)
Expires: Never
Valid:   True
Origin:  Web
Scopes:  create_note manage_pages offline_access photo_upload publish_actions publish_stream share_item status_update video_upload

但是在使用这样的访问令牌时:(很明显,YYYYYYY被替换为实际令牌):

$facebook = new Facebook(array('appId'=>'148279321865482', 'secret'=>'XXXXXX', 'cookie'=>false));
$target_id = '124924677541618'; // Fragrant Heart Meditation Page
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>$msg, 'access_token'=>'YYYYYYY'));

我收到错误:

[message] => Invalid OAuth access token.
[type] => OAuthException
[code] => 190

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

哈哈 - 所以最初的问题实际上是access_token缺失;但是,当我将access_code粘贴到我的代码中时,我错误地复制了我的访问密钥;因此“无效的OAuth访问令牌”。 D'哦!

因此对于处于相同情况的其他人(自动从PHP服务器发布到您自己的页面),正确的代码是

$facebook = new Facebook(array('appId'=>'YOUR APP ID', 'secret'=>'YOUR APP SECRET', 'cookie'=>false));
$target_id = 'YOUR PAGE ID'; 
$facebook->api("/{$target_id}/feed", 'POST', array('message'=>'YOUR MESSAGE', 'access_token'=>'YYYYYYY'));

要获取永久访问令牌,请按照http://developers.facebook.com/docs/authentication/server-side/中的步骤进行操作,具体步骤1和4:

以您要发布到的页面的所有者身份登录。转到

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES应为 publish_stream ,以及您需要的任何其他权限。 接受请求,该请求将重定向回YOUR_REDIRECT_URI(必须与您的应用设置中的域相同) 从重定向URI复制CODE并转到

https://graph.facebook.com/oauth/access_token?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &client_secret=YOUR_APP_SECRET
   &code=CODE_GENERATED_BY_FACEBOOK

访问令牌将位于页面正文中。