0

我已经forge.facebook.authorize()在我的应用程序中成功使用了几个月来获取 FB auth 令牌。

然而,自从上周某个时间点以来,由于到期时间不正确,我一直无法验证它返回的任何令牌,因此此后无法注册或登录任何 Facebook 用户。

我必须明确我的代码没有改变——这个 FB 登录之前工作正常,然后突然停止,之后就没有了。已部署的实时应用程序突然停止让用户使用 Facebook 登录。

来自 forge.facebook.authorize 的回复:

[FORGE] '"successfully authorized with FB", 

{"access_token":"....","access_expires":1367922592459}'

然后,我使用此函数将到期秒数转换为 JS 日期对象:

function toDateTime(secs) {
    var t = new Date();
    t.setSeconds(secs * -1);
    return t;
}

toDateTime(1367922592459);
> Sun Jun 11 -41335 12:22:41 GMT+0100 (BST)

看到这里,这一年正在展示一些疯狂的东西,绝对是在 Facebook 被发明之前。

所以无论如何,然后我的代码将 FB 身份验证数据传递给 Parse.com 以登录用户,而 Parse.com 显然将其返回为具有无效的到期时间。

该问题出现在使用 trigger.io v1.4.29 和 v1.4.33 构建的 iOS 和 Android 应用程序上

注意:我的网页 ( http://wewana.com/ ) 上有一个有效的 FB javascript 登录名,它连接到同一个 Facebook 应用程序和同一个 Parse.com 应用程序。此页面没有任何问题,因此 FB 应用程序似乎很好。

4

3 回答 3

2
t.setSeconds(secs * -1);

你是故意乘以-1吗?我不明白为什么可以预期这会起作用。

于 2013-03-11T00:07:09.083 回答
1
var d = new Date(1367922592459);

就这样,简单易行。

(由于 JavaScript 以毫秒为单位处理 Date,因此无需做/1000任何事情。)

于 2013-03-11T15:02:46.113 回答
0

tldr; 我错误地将过期时间戳处理为秒。以毫秒为单位处理它们可以解决问题。显然有问题toDateTime()

完整版:一段时间以来,parse.com 一直在接受无效的 FB 到期日期。当用户登录正常时,​​我们不知道有问题。最近 parse 更改了一些内容,因此它们在无效日期上出错,导致我们的登录中断。

我们将秒转换为 JS 日期对象的函数需要更改为基于毫秒的转换。

新的工作功能:

function toDateTime(secs) {
    var t = new Date(0);
    t.setUTCSeconds(secs / 1000);
    return t;
}
于 2013-03-11T14:51:21.677 回答