こんにちは、なかわけです。
今日はTwitter API の OAuth 認証の話。
よくOAuth 認証の方法は紹介されているけど、認証したWebアプリを解除する方法が語られていないので、自分なりに調べてみました。
結論から言うと、Webアプリ側(Webサービス側)から認証を解除する方法はないみたいです。
例えばWebサービス側のページで「認証を解除」という処理はWebサービス側のDBからユーザのOAuth Tokenを削除するだけの処理なので、Twitter のapps ページにはWebアプリが登録されたままです。
逆に、Twitter のappsページから 「Revoke access(許可を取り消す)」をクリックするとTwitter 側から認証は解除されるけど、Webサービス側のDBにはユーザのOAuth Token のレコードは残ったままです(当たり前だけど)。
この状態でAPIを使用しようとすると以下の様なエラーが戻ってきます。
エラーのvar_dump出力
[errors] => Array( [0] => stdClass Object( [message] => Invalid or expired token [code] => 89 ) )
一応、Webサービス側のDBのToken を削除した状態でも、Twitter のApps ページから Revoke した状態でも、認証接続は切れている状態なのでWebアプリからはユーザのアカウントにアクセスできないようにはなります。
あんまりいい方法がないようですが、ユーザが任意でTwitter の Apps ページから Revoke した場合は、WebサービスのページでToken の有効性を確認して無効だったら、DBに残っている古いToken を削除して新たに認証を促す表示をした方がいいようですね。