【发布时间】:2015-07-22 06:46:38
【问题描述】:
我正在尝试使用 Facebook Graph API 将 Facebook 帖子发布到用户自己的墙上,但我遇到了多个问题。
我有一个 Wordpress 网站,我正在使用 OneAll.com 服务来维护和管理我的用户的社交登录。在我已经将一个帐户链接到一个 Facebook 帐户之后,我已经将一个用户发布到我的 Facebook 应用程序中添加了所需的权限。有问题的是,OneAll 似乎不会更新存储在该社交身份中的访问令牌,直到它过期。但是好像是因为新增app权限导致access token提前过期,所以需要手动重新同步OneAll上用户的社交身份。
他们确实有一个函数可以调用以通过他们的 API (Here) 同步身份,但我似乎无法成功向它发送请求。
我尝试按照我的 Java servlet 中指定的方式设置 HTTP PUT 请求,但每次调用返回 error 411 时都会失败。我已经完成了我的研究,这似乎需要在请求中指定内容长度,但即使我尝试添加它似乎也不起作用。
因此,我尝试在我的应用程序的 Parse.com 云代码中设置一个云功能来激活此重新同步,但这一次也每次都失败,我似乎无法弄清楚错误代码:
Input: {"oaIDToken":"924e6f**********"}
Result: Uncaught Error: Can't form encode an Object
知道这个错误是什么意思以及如何解决它吗?我不能说我做错了什么。这是我的云功能:
Parse.Cloud.define("forceOAIDUpdate", function(request, response) {
var IDToken = request.params.oaIDToken;
var IDURL = "https://w*******d.api.oneall.com/identities/" + IDToken + "/synchronize.json";
Parse.Cloud.httpRequest({
method: 'PUT',
url: IDURL,
body: {
request: {
synchronize: {
update_user_data: true,
force_token_update: true
}
}
},
success: function(httpResponse) {
console.log("OA ID token successfully refreshed.");
console.log(httpResponse.text);
response.success("OA ID token refreshed");
},
error: function(httpResponse) {
console.error('Requested OA ID refresh failed with response code ' +
httpResponse.status);
response.error("Failed to refresh OA ID. Error: " +
httpResponse.data + httpResponse.text + httpResponse.error);
}
});
});
事实上,我知道该函数接收的 OneAll 身份令牌是有效/正确的,因为它适用于我的其他函数,这些函数为用户执行其他操作。此外,当我尝试在我的 Java servlet 中执行此操作时,我将基本身份验证登录附加到请求中,但它似乎没有任何区别。无论哪种方式,是否有可能缺少身份验证是导致此错误的原因?如果是这样,我如何在 Parse 云 HTTP 请求中插入该身份验证标头?我查了一下,网上找不到任何能清楚描述它的资源。
还有一件很奇怪的事情我想不通。我尝试使用 REST 控制台/客户端手动调用 OneAll 的 REST API,但无论其 REST API 的任何端口的 URL 是什么,连接总是失败 - 控制台立即返回没有响应。无论有没有附加到请求的基本身份验证标头,都是如此。这到底是怎么回事??
可以这么说,我已经达到了“作家的障碍”,并且已经没有想法来调试它了。我将不胜感激任何帮助。这个问题已经让我困惑了太多小时了。
【问题讨论】:
标签: java facebook rest facebook-graph-api put