0

私は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 認証データを Parse.com に渡してユーザーをログインさせます。Parse.com は明らかに有効期限が無効なためにそれをスローします。

この問題は、trigger.io v1.4.29 および v1.4.33 でビルドされた iOS および Android アプリで発生しています。

注:同じ Facebook アプリと同じ Parse.com アプリケーションに接続している Web ページ ( http://wewana.com/ ) で FB JavaScript ログインが機能しています。このページは特に問題ないので、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 有効期限を受け入れてきました。ユーザーは正常にログインしていたため、問題があることはわかりませんでした。最近解析が何かを変更したため、無効な日付でエラーが発生し、ログインが中断されました。

秒を JS 日付オブジェクトに変換する関数は、ミリ秒に基づいて変換するように変更する必要がありました。

新しい作業機能:

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