15

ユーザーに代わって友人の 1 人にスケジュールされたウォール投稿を行う実行中のアプリケーションがあります。

アプリケーションはかなり長い間正常に動作していましたが、最近静かになった少数のユーザーから、メッセージが投稿されていないとの報告がありました。

ログは示しています

OAuthException: The access token could not be decrypted. 

ユーザーがアプリケーションに再度アクセスし、アクセス トークンをリセットしても、例外は持続します。

エラーの原因とそれを回避する方法は何ですか?

4

5 に答える 5

12

Facebook API に HTTP リクエストを送信するときに次のエラー メッセージが表示される場合:

{
  "error": {
       "message": "The access token could not be decrypted",
       "type": "OAuthException",
       "code": 190
  }
}

これは、HTTP リクエストを作成するときに Facebook に送信するアクセス トークンが無効であることを意味します。

HTTP 応答ヘッダーを見ると、次のようなフィールドが表示されます。

WWW-Authenticate:OAuth "Facebook Platform" "invalid_token" "The access token could not be decrypted"

有効なトークンよりも 1 文字短いアクセス トークンを送信したため、上記のエラーが発生しました。
保持されているアクセス トークンと送信していたトークンを比較したところ、この間違いを発見しました。

Facebookで使われているOAuth 2.0のアクセストークン(ベアラートークン)の有効性はAccess Token Debuggerで確認できます。

于 2012-11-22T07:14:40.863 に答える
4

Facebook トークンはサイズが大きくなり、255 文字に制限されなくなったため、サイズが制限された変数またはデータベース フィールドを使用すると、トークンを格納する方法によって例外が発生する可能性があります。

これは、この Facebook ドキュメントの最後のセクションで指定されています: https://developers.facebook.com/docs/facebook-login/access-tokens

サイズ

Facebook がアクセス トークンに格納される内容とそのエンコード方法を変更するにつれて、すべての種類のアクセス トークンのサイズが時間の経過とともに変化することが予想されます。時間の経過とともに成長したり縮小したりすることが期待できます。アクセス トークンを格納するには、特定の最大サイズのない可変長データ型を使用してください。

たとえば、トークンを SQL に格納するには、VARCHAR の使用を避け、代わりに TEXT または BLOB を使用します。

于 2014-08-18T08:31:55.907 に答える
1

これは、データベースに保存する前にトークンがトリムされたことが原因である可能性があります。またはフィールド サイズがトークン チャーター サイズよりも小さい。{variable} テーブルを一度チェックして、正しい完全なトークンを確認してください。

于 2013-05-30T07:50:07.203 に答える
0

私の場合、これは、「私」のリクエストを行ったときにuserIDが含まれていないaccessTokenが原因でした(これは、トークンからuserIDを決定しようとするものだと思います)。

トークン デバッガーの応答:

App ID: 
<ID> :   <app>
User ID: Unknown
Issued:  Unknown
Expires: 1339171200 (in about an hour)
Valid:   True
Origin:  Web
Scopes: 

この問題を解決するために、「私」をリクエストする代わりに、authResponse から直接アクセスできるユーザー ID のプロファイルをリクエストしました。

于 2012-06-08T14:45:48.683 に答える
0

このエラーは、アクセス トークンの長さが正しくない場合によく発生します。トークンの形式を確認します。

于 2015-08-08T00:05:25.177 に答える