我一直在我的應用程序中使用forge.facebook.authorize()
幾個月來獲得FB授權令牌。forge.facebook.authorize返回不正確的Facebook令牌到期時間
但是,由於上週的某個時間點,我無法驗證它返回的任何令牌,因爲過期時間不正確,因此無法註冊或登錄任何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顯然會因無效的到期時間而將其返回。
問題是發生在iOS和Android應用與trigger.io v1.4.29和v1.4.33
注意建:我有一個工作FB在我的網頁的javascript登錄(http://wewana.com/),其連接到相同的Facebook應用程序和相同的Parse.com應用程序。這個頁面沒有出現任何問題,所以看起來FB應用程序很好。
一些橡皮鴨調試後,我的工作出來的東西。它看起來像過期日期是毫秒而不是秒。例如:var d2 = new Date(0); D2。調用setUTCSeconds(1000分之1367922592459); >星期二五月07 2013 11:29:52 GMT + 0100(格林尼治標準時間夏令時) – Meirion 2013-03-11 00:16:10
我很困惑:在你的評論中你使用新的日期(0),而不是乘以-1 - 這看起來是正確的,我期待這一點。在你的問題(和你的實時應用程序)中,你使用了新的Date()並乘以-1。我不明白這是如何工作的,無論access_expires是以毫秒爲單位還是以毫秒爲單位......你確定你沒有推出破碎的JS(例如使用重新加載) – 2013-03-11 10:33:38
結果非常多 - toDateTime( )功能被破壞,但Parse.com接受無效的失效日期 - 所以我們登錄的用戶,我們從來沒有看到toDateTime()的問題。解析修正了他們的錯誤,然後這個問題變得明顯。今天早上給你發了一封郵件,你知道了嗎?也許我現在在你的垃圾郵件列表中;) – Meirion 2013-03-11 14:45:52