2

我想在 Android 上使用 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 用 access_token、app_id 和对象头(使用 setRequestProperty())调用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

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

4

1 回答 1

2

我不知道问题到底出在哪里,但我开始使用 AsyncFacebookRunner,它是 Facebook SDK 的一部分,现在一切正常。正如我从 AsyncFacebookRunner 的源代码中看到的那样,同样的事情做起来有点不同。

编辑:对 Like 操作的简单请求

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();
于 2012-10-01T17:09:01.233 回答