访问令牌签名无效 - 使用应用将照片发布到fb页面

时间:2011-11-14 14:51:28

标签: facebook oauth

我在facebook上运行了一个应用程序,可以将照片发布到Facebook页面,但是当我更改了我的facebook密码时,我的标记重置了。所以我回过头来获取所有令牌的身份验证过程。而且我一直收到这条消息。 {“message”:“访问令牌签名无效。”,“类型”:“OAuthException”}}

我认为问题是我的页面令牌不正确。与我的旧页面令牌相比,我的新页面令牌是额外的30个字符。我在想我错过了一步。

我使用https://graph.facebook.com/me/accounts?access_token=获取了我的网页令牌。

这是我的旧页面令牌看起来像= ftXXXXXXXXXVJCeVnt-sKYoM

但现在它是这样的:AAACeXXXXXXXXXXXXXXXXXXXpLiXZCYCIEsBzK59vUcP00cpk4XXXXXXXXXXXXXXXd2tnbCePVYLEuk0OBrQBmTRnGHfs3gZDZD

我错过了使用页面令牌的步骤吗?

我知道这不是范围问题。我已经分配了这个当事人的每一个许可。

感谢您的帮助。

这是我的代码示例,在我搞砸了所有令牌访问权限之前工作。我在这里有我的新令牌,这就是给我带来麻烦的东西。不是其余的代码。任何见解都是巨大的。

$access_token =  '1743XXXXXXXXX9104|fcdApQ4CXXXXXXXXXMo82SRHQh8o|81XXXXXXXXX70|AAACelwXXXXXXXXXuiTpY2BBwUZBpLiXZCYXXXXXXXXXcpk4g4FBkhpwykR0amEcdn1Kd2tXXXXXXXXXrQBmTRnGHfs3gZDZD';
$post_name = 'NAME';
$post_link = 'http://mykirklands.com';
$post_picture = '000000.jpg';
$post_description = 'description';

// CRAFT OUR MESSAGE TO POST
$url = "https://graph.facebook.com/$page_id/photos";
$post_name = $content;
$post_picture = '@'.$_SERVER['DOCUMENT_ROOT'].''.$image;
$attachment[$count] = array('access_token' => $access_token,                        
'source'       => "$post_picture",
'message'      => "$post_name"
);
echo $count++;
}


foreach($attachment as $row){
// SEND TO FACEBOOK
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $row);
$result= @curl_exec($ch);
curl_close ($ch);
};

1 个答案:

答案 0 :(得分:2)

我找到了答案。好像Facebook最近改变了一些事情。

旧的访问令牌的格式为 APP_ID | APP_TOKEN | PAGE_ID | PAGE_TOKEN

从应用程序发布到Facebook墙所需的新访问令牌只是: PAGE TOKEN

页面标记之间的区别在于: 旧令牌

4qVvc4wBz14_fgJLqE7PeQyLgaY

新令牌

XXXXXXXXXXcnPXXXXXXXXXXVr3hmNPsqypxR9mXXXXXXXXXXXVGFdmQeWZCXXXXXXXXXXelrC69kdwZCXXXqD98IislBJ5YYYYYYYwZDZD

我猜测新令牌包含足够的安全性,可以对应用程序进行身份验证以及为页面提供权限。

我正在使用php脚本通过cURL将图片帖子发布到页面的Facebook墙上。同样重要的是要注意,您需要将令牌作为变量包含在您发送给cURL的URL中。

$url = "https://graph.facebook.com/$page_id/photos?access_token=$page_access_token";

我正在添加重要的代码块来整理这件事:

$attachment = array('message' => '',
'name' => "$post_name",
'caption' => '',
'link' => '',
'description' => "$post_name",
'source' => "$post_picture",
'actions' => array(array('name' => '', 
'link' => ''))
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
$result= @curl_exec($ch);
curl_close ($ch);

全部完成。事情已恢复正常。如果您对此有任何疑问,请与我们联系。在我做出这个简单的改变之前,我把头埋在墙上3天。希望没有其他人必须经历我所经历的事情。