0

私は自分のFacebookアカウントからメッセージをフェッチするためにfacepyfacebookapiを使用しています。long live access tokenAPIを使用して60日間の有効期間を取得しました。ここで、メッセージを照会する前のプログラムで、トークンの有効期限が切れているかどうかを確認し、有効期限が切れている場合は新しいトークンをフェッチします。

get_extended_access_tokenを使用して います。これは、トークンの有効期限を説明する日時インスタンスも返します。新しいメッセージをクエリするたびに(以前と同じであることがわかっています)get_extended_access_tokenもフェッチされるため、これは効率的な使用方法ではないと思いますが、これはオーバーヘッドだと思います。access token

だから、ググってみたら、

https://graph.facebook.com/debug_token?input_token=INPUT_TOKEN&access_token=ACCESS_TOKEN

トークンをデバッグするには

だから私はlong live access token代わりに私を供給しました、INPUT_TOKEN and ACCESS_TOKENそしてそれは私にjson応答を与えました:

{
   "data": {
      "app_id": XXXXX,
      "is_valid": true,
      "application": "YYYYY",
      "user_id": ZZZZZZ,
      "issued_at": 1349261684,
      "expires_at": 1354445684,
      "scopes": [
         "read_mailbox"
      ]
   }
}

今、あなたがexpires_atそれが示しているフィールドを見る1354445684 secondsと、それを日/月に変換しようとしたとき、それは私に与えました、そして私15676 daysがデバッグオプションを使ってグラフエクスプローラーで同じトークンをチェックしたときそれは示しました

expires_at: 1354445684(about 2 months)

さて、私が理解していないのは、Pythonでこれを達成する方法1354445684と同等である方法です。2 months

また、トークンの有効期限が切れているかどうかを確認するためのより良いアプローチはAPI or using the facebook urlどれですか?

4

2 に答える 2

7

これで、expires_atフィールドを見ると、1354445684秒が表示されており、日/月に変換しようとすると15676日でした。

次に、何か間違ったことをした(または理解した)。

expires_at1354445684はUnixタイムスタンプでありSun, 02 Dec 2012 10:54:44 +0000、人間が読める形式の日付に変換されます。

そして、それはissued_atタイムスタンプ1349261684からほぼ2か月です。Wed, 03 Oct 2012 10:54:44 +0000

于 2012-10-08T15:48:50.690 に答える
2

トークンを保証するために個別のリクエストを行うのではなく、例外に依存してトークンが有効かどうかを確認することをお勧めします。

from facepy import GraphAPI

graph = GraphAPI(token)

try:
    graph.get('me')
except GraphAPI.OAuthError:
    # Redirect the user to renew his or her token
于 2012-10-19T13:56:37.230 に答える