2011-11-14 18 views
2

我有一個應用程序在Facebook上運行,將照片發佈到Facebook頁面,但是當我更改我的Facebook密碼時,我的令牌重置。所以我回到了獲取所有令牌的認證過程。我不斷收到這個消息。 {「message」:「訪問令牌簽名無效。」,「type」:「OAuthException」}}訪問令牌簽名無效 - 使用應用程序發佈照片到FB頁

我認爲問題在於我的頁面令牌不正確。與我的舊頁面令牌相比,我的新頁面令牌是額外的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); 
}; 

回答

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天。希望沒有其他人必須經歷我所經歷的。

相關問題