我已经在我的应用中成功使用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应用程序很好。
答案 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;
}