2012-11-22 35 views
0

我有publish_stream應用程序,我可以在我的用戶牆上發佈狀態更新,現在我要發佈照片,搜索後我讀到batchrequest,使我的代碼,這樣錯誤有照片批量上傳請求+多用戶

<?php 
require_once('./includes/config.php'); 
require_once('./includes/skins.php'); 
require_once('./includes/functions.php'); 
require_once('./includes/facebook.php'); 
$app_id = "$appid"; 
$app_secret = "$appsec"; 

$sql=mysql_query("select `f_id`, `facebook_access_token` from `users` "); 
while($rows = mysql_fetch_array($sql)){ 
$f_id=$rows['f_id']; 
$facebook_access_token=$rows['facebook_access_token']; 
$batched_request = '[{"method":"POST", "relative_url":"'.$f_id.'/photos",' 
    . ' "body" : "message=لو بتحب جاهين و رباعياته اشترك معانا فى التطبيق و هننشرلك على بروفايلك اجمد رباعيات صلاح جاهين http://2lshmaker.uni.me/jahin/", "attached_files":"file1"}}]'; 

$post_url = "https://graph.facebook.com/" . "?batch=" 
    . Urlencode($batched_request) . "&". $facebook_access_token 
    . "&method=post"; 
} 
echo ' <form enctype="multipart/form-data" action="'.$post_url.'" 
     method="POST">'; 
echo 'Please choose 2 files:'; 
echo '<input name="file1" type="file">'; 
echo '<input type="submit" value="Upload" />'; 
echo '</form>'; 
?> 

但它給我的錯誤

{ 
    "error": { 
     "message": "Top level access token or app id not specified for batch request.", 
     "type": "GraphBatchException" 
    } 
} 

我不知道我得到了什麼,儘管已經有publish_stream和有效的access_token

回答

1

你需要指定一個頂級的訪問令牌,即使你包括在該批次

每個單獨的請求訪問令牌,請先閱讀標記批次API文檔中「指定爲不同的操作不同的訪問令牌」的部分

所有上述示例將單個訪問令牌指定爲頂級 參數。批處理API是靈活的,並允許個別請求 指定他們自己的訪問令牌作爲查詢字符串或表格後 參數。在這種情況下,頂級訪問令牌被視爲 後備令牌,並在個別請求未明確指定訪問令牌時使用。

當你想查詢使用多個用戶的 不同的訪問令牌的API,這可能是有用的,或者一些您的通話需要使用的應用程序訪問令牌做出 。

如果沒有單個請求指定要使用的訪問令牌,則必須將訪問令牌包含爲頂級參數,並且此 將用於所有請求。

假設$facebook_access_token=$rows['facebook_access_token'];收益訪問列表令牌,這些需要內批中每個呼叫被追加,所以$batched_request應該有同等數量的調用以符合您所提供的訪問令牌的數量。除此之外,如果您提供的任何令牌失敗,則需要頂級訪問令牌,因此很可能將該應用程序訪問令牌作爲後備令牌。

具體到你的代碼,你甚至沒有正確定義的頂層訪問令牌參數,它應該是

$post_url = "https://graph.facebook.com/" . "?batch=" . Urlencode($batched_request) . "&access_token=". $facebook_access_token . "&method=post";

「& =的access_token」。 $ facebook_access_token
------^MISSING^

也就是說它必須在字段和值的形式。 http://en.wikipedia.org/wiki/Query_string

+0

我真的可以理解錯誤中寫的是什麼,問題是什麼是頂級訪問令牌廣告我如何使代碼成功工作 –

+0

@phwd添加了文檔後,仍然無法幫助。我已經閱讀過這些文檔,但是他們沒有提供工作示例,也沒有解釋上述代碼的錯誤。這纔是重點。這些文檔沒有幫助,因爲它們很模糊,沒有提供示例。不是一個有用的答案。 –

+2

請不要提及我,如果你沒有什麼可說的,除非它沒有幫助。這是一條雙向的街道。你必須提供你的問題的細節,以獲得細節。這確實是OP的問題的解決方案,因爲他將PHP中的調用推爲「&」。 $ facebook_access_token',它最喜歡等同於'ADXXXXXXAccessToken'而不是'access_token = ADXXXXXXAccessToken'注意缺少'access_token'部分。所以錯誤確實是正確的,他沒有正確指定它。另外請不要輸入CAPS,這是一個令人討厭的方式來關注正在嘗試幫助的人 – phwd