トークンの有効期限が切れる可能性のある理由は何ですか(ユーザーにアプリの認証を解除させる以外に)?
私の問題は、数千人のユーザーがいるアプリがあることです。すべてのAPI通信は完全に機能しますが、一部のユーザーにはinvalid or expired token
エラー、私の最初は、彼らはアプリへの認証をキャンセルしたユーザーであるが、私はそれらのいくつかに連絡し、彼らはアクセスを取り消していないということでした。
他の問題がそのエラーを引き起こす可能性のあるアイデアはありますか?
アクセストークンの使用中に GET account/verify_credentials を呼び出して、アクセストークンの整合性をいつでも確認します。
その言及と研究により、私はそれを知った:
ユーザーが設定からアプリケーションを明示的に拒否した場合、またはTwitter管理者がアプリケーションを中断した場合、アクセストークンは無効になります。アプリケーションが一時停止されている場合、アプリケーションページに一時停止されたことを示すメモが表示されます。
Twitterがなぜoauthアクセストークンが無効/期限切れですか?
この投稿を確認してください: 無効/期限切れのアクセストークン 。
Googleグループには、次のような投稿が1つあります。
二度目のチャンスはありません。これは仕様によるものです。 OAuthリクエストには一意の署名があります。特定のリクエストが送信されると、再度送信することはできません。ピンに正しく入力できれば、すべて順調です。間違ったピンを入力すると、401 Unauthorizedになります-これは予想されていますが、再度ピンを入力しようとすると、正しいピンでも不正と表示されます。
上記のリファレンスについては、これを確認してください link .
同じ問題に対するTwitter従業員によるいくつかの提案:
この時点で私がお勧めすることは2つあると思います。同じ動作。 2.)request_token呼び出しでoauth_callbackを渡してみてください。正直なところ、これが違いを生むとは思いませんが、ここでできる限り厳格になりたいと思います。
これも確認してください discussion 言って:
Dev.Twitter.comでのアプリの設定の代わりに、oauth/access_token呼び出しから返されたoauth_tokenとoauth_token_secretを使用する必要があります。
同じエラーが発生していたので、(access_token) to (access_token_key)
そしてそれは私のために働いた。
私はそれが誰かを助けることを願っています。
他の人が行ったコメントに加えて、トークンに問題がない場合、Twitter APIは「無効なトークン」エラーを返すことがあります。正しく解析されないリクエスト文字列を作成したときに最も気づきました。たとえば、一度URIでエンコードできないシンボルが含まれるscreen_nameを渡すと、そのエラーが発生していました。また、次のような空の値(カーソルが空の場合)を渡したときにも取得しています。
https://api.Twitter.com/1/followers.json?cursor=&screen_name=whatevah
このエラーを返している呼び出しの詳細を教えてください。
私の神の答え は正しいですが、私は共有します 別の質問からの私の答え それがあなたのコンピューターの時計である方法を説明します:
あなたのOAuthフローが1日機能していて、次の日に失敗した場合、コンピューターのclockを確認してください。Vagrantを実行していました何らかの理由で時刻が前日に設定されたため、Twitter APIは{"code":89、 "message": "Invalid or expired token。"}を返しました。これは、範囲外の401タイムスタンプとして表示されることもあります。このコマンドを使用して、Ubuntuの時計を更新できます。
Sudo ntpdate time.nist.gov
代替方法ntpdate
がシステムで利用できない場合:
Sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
access Token = 738629462149844993-FcWHjfcucCLGEosyGGQ38qI ****** iCの場合、ハイフン(-)に続いてUSERIDを指定することを忘れないでください。
まず、ナイス質問ラン。
Twitter開発者を経験したことはありますか?
Twitterは2ペアのトークンとライブラリを提供するため、使用するトークンがあいまいになることがあります。その1つは秘密鍵です。
Twitter IDで始まり、ハイフンが続くトークンを選択する必要があります。
さて、あなたの質問はあなたのユーザーの何人かでこのエラーが起こるということです。そのため、アプリ自体がトークンを選択するのが曖昧だと感じる答えは次のとおりです。
私は完全に正しいわけではないかもしれませんが、このソリューションを少なくとも1回試すことをお勧めします。
これらのユーザーがnot取り消しアクセスを持っている可能性があります。しかし、私の経験では、ユーザー(テストケース:私)がパスワードを変更した後、アクセストークンの有効期限が切れることもあります。
ユーザーがそれを行うと、そのユーザーのスコープでストリームAPIのREST APIを使用できなくなります。その状況に対応するようにアプリケーションを調整してください。ユーザーのセッションを取り消してください。アプリケーションに戻ると、再びTwitterにリダイレクトされて新しいOAuthアクセストークンプロセスが開始されます。または、再接続を親切に求めるメールを送信します。Vimeo/ Windows/...期限切れのトークンを電子メールで処理する人々の一部です。
楽しんで!
トークンが一度に機能することを確認しましたか?私が取り組んだOAuthシステムでは、トークンの安全な保存および取得方法にエラーがあり、その一部が破損する原因になりました。過去、それは良い第一歩です。
ストレージからトークンを取得するとき、トークンは変更されていませんか?管理している方法で破損する可能性はありますか?
トークンが機能して失敗したときを追跡するために、ログを配置します。トークンは一度失敗すると再び機能し始めますか?トークンを30日間使用しない場合、有効期限はありますか?詳細なログを使用して、期限切れのトークンの識別を開始し、使用中のパターンを探して、トークンの期限切れの原因を示すことができます。
他の可能性も同様に探ってください。ユーザーはTwitterでトークンをどのように取り消すのですか?誤ってそれを行うのは簡単ですか?トークンに失敗したユーザーの場合、他の承認済みアプリも機能しなくなりましたか?
これはあなたに役立つかもしれません。私は同じ問題に直面しました。
以下のコードスニペットを見つけてください
$code = $tmhOAuth->user_request(array(
'method' => 'POST',
'url' => $tmhOAuth->url('oauth/access_token', ''),
'params' => array(
'oauth_verifier' => trim($params['oauth_verifier']),
)
));
if ($code == 200) {
$oauth_creds = $tmhOAuth->extract_params($tmhOAuth->response['response']);
// echo '<pre>';print_r($oauth_creds);exit;
$tmhOAuth->reconfigure(array_merge($tmhOAuth->config, array(
'token' => $oauth_creds['oauth_token'],
'secret' => $oauth_creds['oauth_token_secret'],
)));
$code = $tmhOAuth->user_request(array(
'url' => $tmhOAuth->url('1.1/account/verify_credentials')
));
}