使用Facebook Open Graph缺少访问令牌

时间:2012-09-29 19:09:20

标签: android facebook-graph-api

我想在Android上使用Facebook SDK使用Open Graph API发送Like状态。这里描述:https://developers.facebook.com/docs/opengraph/actions/builtin/likes/
从SDK中我使用SSO获得access_token(具有publish_actions权限)。我已经在Facebook Dev帐户上注册了我的应用程序,所以我有app_id。
现在我想使用Open Graph API在我的墙上发送Like状态。所以我用access_token,app_id和对象标题(使用setRequestProperty())用HttpURLConnection和setRequestMethod调用https://graph.facebook.com/MY_USER_ID/og.likes进行POST。

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 Bad Request

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

当我使用Graph API Explorer(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

所以问题是,访问令牌的问题在哪里? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我不知道问题究竟在哪里,但我开始使用AsyncFacebookRunner,这是Facebook SDK的一部分,现在一切正常。正如我从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();