2013-02-08 193 views
1

我在我的應用程序中有一個方法,允許用戶「喜歡」他/她的新聞提要中的帖子。這是通過使用HttpMethod.POST的簡單圖形請求完成的。但是,當我嘗試做使用HttpMethod.DELETE的「不像」的行動,我得到一個錯誤回調:Facebook Graph API不像喜歡的帖子

02-08 00:35:57.298: I/Detail(2628): {Response: responseCode: 403, graphObject: null, error: 
{HttpStatus: 403, errorCode: 200, errorType: OAuthException, errorMessage: (#200) 
Feed story publishing to other users is disabled for this application}, isFromCache:false} 

現在,我認爲這有什麼做的最新嘗試,以使與Facebook的使用所有Facebook的整合所有的應用程序看對話和風格,但我可能是錯的。下面是我有可疑roadmap post

刪除通過圖形API張貼到牆上的朋友,我們將 刪除通過圖形API 張貼到用戶的朋友的牆壁的能力的能力。具體而言,針對[user_id]/feed的帖子,其中[user_id]爲 不同於會話用戶,或者stream.publish呼叫,其中 target_id用戶與會話用戶不同,將會失敗。如果您想讓人們張貼到他們的朋友的時間表,請調用 供稿對話框。包含朋友的故事通過用戶提及標記或 動作標記將顯示在朋友的時間軸上(假設朋友批准標記 )。欲瞭解更多信息,請參閱此博客文章。

任何想法,我可能做錯了,還是Facebook只是毀了我?謝謝!

編輯:這裏是我用來運行請求的代碼。

Request likeRequest = new Request(Utility.fbSession, null, null, null, new Request.Callback() { 
    @Override 
    public void onCompleted(Response response) { 
     String responseString = response.toString(); 
     Log.i("Detail", responseString); 
     updateDetail(); 
    } 
}); 
HttpMethod nextLikeCall = HttpMethod.DELETE; 
likeRequest.setHttpMethod(nextLikeCall); 
likeRequest.setGraphPath(itemId+"/likes"); 
likeRequest.executeAsync(); 
+0

似乎對我來說工作得很好。除此之外,我正在使用較舊的SDK V 2.x.我昨天在一個問題上發佈了一個關於喜歡和「不喜歡」評論的答案:http://stackoverflow.com/a/14749927/450534。看看它是否適合你。你將不得不改變評論的具體部分,但代碼是相同的帖子以及評論。 –

+0

它似乎是基於錯誤代碼的權限問題,但我擁有publish_stream權限集。 – Wenger

+0

您是否在圖形瀏覽器中嘗試過確切的請求? https://developers.facebook.com/tools/explorer您描述的場景應該可行。 –

回答

1

當您從圖表數據中獲取帖子ID時,它的格式應該是:XXXXX_YYYYY。 XXXXX僅僅是用戶ID,YYYYY是實際的帖子ID。你需要做的是提取並使用圖形給你的帖子ID的YYYYY部分。所以,而不是graph.facebook.com/XXXXX_YYYYY/likes ....你想發送graph.facebook.com/YYYYY/likes。這將適用於喜歡和不喜歡,你可以先在圖形瀏覽器中測試,然後再將子串提取方法一起使用。

不知道如何提取在Android字符串的一部分,但我知道在Objective-C/iOS版,它可以這樣做(代碼沒有測試,供參考/想法):

SString *actualPostIdStr;  //The String we will put the actual postId in 
NSString *oldIdStr   = //<the string in format XXXXX_YYYYY> 
NSInteger charCount   = [oldIdStr length]; //get the length of the original XXXXX_YYYYY string 
NSRange fRangeCount   = [oldIdStr rangeOfString:@"_"]; //get count of characters to remove (XXXXXX) 


if (fRangeCount.location != NSNotFound){ 
    NSInteger startingPos = fRangeCount.location + 1; //get the starting character position of the actual postId 
    actualPostIdStr   = [[oldIdStr substringWithRange:NSMakeRange(startingPos, charCount - startingPos)] copy]; 
} 

希望這有助於。

編輯:
好的,所以我一直在玩喜歡整天...似乎這種方法有時不起作用,但這一切都取決於你試圖喜歡的圖形對象的類型/不像。例如...普通狀態帖子,這種方法完美的作品。然而,當我試圖用消息/故事發布對象來拍照時遇到了一個問題。事實證明,在這種帶有照片的後置對象的圖形數據中,除了處於狀態後置圖數據中的簡單「id」之外,還有一個名爲「object_id」的附加參數。在這種情況下,在照片和故事帖子中,您需要傳遞「object_id」,而不會改變成功取消喜歡。

這個混亂看起來好像是FB結束的一個bug,或者他們正在改變並且不允許圖表api &中的喜歡/不喜歡,只是忘記了/還沒有告訴我們:)希望前者。與此同時,你只需要使用我的上面的答案,但只要確保使用可找到的許多不同類型的後期對象進行測試,並在條件不同時使用不同的id(部分「id」 ...「object_id」等)是必需的。

+0

這有點合理。我今晚必須嘗試。謝謝! – Wenger

+0

對。 「object_id」是您獲取高分辨率數據以及鏈接到指定帖子的照片的其他詳細信息的地方。我想這是有道理的,然後用它來代替帖子ID。 – Wenger

+0

@Wenger是的,但取決於你所做的是什麼,有很多對象只有「id」而沒有「object_id」......我一直在使用上面的條件來優先獲取「object_id」&回退到提取「id」的有用部分,到目前爲止它已經完美運行。讓我知道這是否有效,當你有機會檢查。 –

0

有時丹尼爾麥卡錫的方法不起作用。在這種情況下,我們需要獲取圖形API請求XXX_YYYY,找到字段object_id,而不像這個object_id fid。

相關問題