forge.facebook.authorize返回错误的Facebook令牌到期时间

时间:2013-03-11 00:03:26

标签: facebook-ios-sdk facebook-android-sdk trigger.io parse-platform

我已经在我的应用中成功使用forge.facebook.authorize()几个月来获取FB身份验证代币。

然而,由于上周的某个时间点,由于到期时间不正确,我无法验证任何已经返回的令牌,因此无法注册或登录任何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 auth数据传递给Parse.com以登录用户,而Parse.com显然会因为无效的到期时间而将其丢回。

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

注意:我在我的网页(http://wewana.com/)上有一个工作的FB javascript登录,它连接到同一个Facebook应用程序和相同的Parse.com应用程序。这个页面没有出现任何问题,所以似乎FB应用程序很好。

3 个答案:

答案 0 :(得分:2)

t.setSeconds(secs * -1);

您是否故意乘以-1?我不明白为什么这可以起作用。

答案 1 :(得分:1)

var d = new Date(1367922592459);

你去,简单易行。

(由于JavaScript以毫秒为单位处理日期,因此无需执行/1000或其他操作。)

答案 2 :(得分:0)

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

存在问题

完整版: 有一段时间,parse.com已经接受了无效的FB到期日期。由于用户正在登录,我们不知道有问题。 最近解析改变了一些东西,所以他们在无效日期出错,导致我们的登录中断。

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

新工作职能:

function toDateTime(secs) {
    var t = new Date(0);
    t.setUTCSeconds(secs / 1000);
    return t;
}