2012-09-29 60 views
2

我想使用Android SDK上的Facebook SDK來使用Open Graph API發送Like狀態。這裏描述:https://developers.facebook.com/docs/opengraph/actions/builtin/likes/
從SDK我使用SSO獲得access_token(具有publish_actions權限)。我已經在Facebook Dev Account上註冊了我的應用程序,所以我有我的app_id。
現在我想使用Open Graph API在我的牆上發送Like狀態。所以我用HttpURLConnection和setRequestMethod來調用https://graph.facebook.com/MY_USER_ID/og.likes的access_token,app_id和object頭(使用setRequestProperty())。
使用Facebook缺少訪問令牌Open Graph

HttpURLConnection conn; 
conn.setRequestMethod("POST"); 
conn.setDoOutput(true); 
conn.setRequestProperty("object", "someURL"); 
conn.setRequestProperty("app_id", "myID"); 
conn.setRequestProperty("access_token", "myToken"); 
conn.setRequestProperty("Content-Length", "" + postMessageInBytes.length); 

我總是得到響應400錯誤的請求

{"error":{"message":"An access token is required to request this resource.","type":"OAuthException","code":104}} 

當我使用的圖形API資源管理器(developers.facebook.com/tools/explorer/)一切工作正常,沒有問題與訪問令牌。
當調試我的訪問令牌,一切都看起來不錯(從另一種語言翻譯):

ID app: my app ID/name 
ID user: user which I used to login 
Issued: 1348929549 (yesterday) 
Valid until: 1354113549 (in about 2 months) 
Valid: True 
Origin: Mobile Web Faceweb 
Permission: publish_actions user_status 

所以現在的問題是,這裏是訪問令牌問題?
感謝您的幫助!

+0

調試您的訪問令牌使用https://developers.facebook.com/tools/debug – CBroe

+0

對於喜歡動作 簡單的要求我編輯我的問題,一切都看起來很好。 – Warlock

回答

2

我不知道問題究竟在哪裏,但我開始使用Facebook SDK的一部分AsyncFacebookRunner,現在一切正常。正如我從AsyncFacebookRunner的源代碼中看到的,同樣的事情做的有點不同。

編輯:

Bundle msgParams = new Bundle(); 
msgParams.putString("object", mUrl); 
Request request = new Request(Session.getActiveSession(), "me/og.likes", msgParams, HttpMethod.POST, 
       likeCallback); 
RequestAsyncTask task = new RequestAsyncTask(request); 
task.execute(); 
+0

可以嗎,請告訴我們代碼是如何實現'AsyncFacebookRunner'的。提前致謝。 – Coderji

+1

答案用簡單的例子進行了更新。 – Warlock