Edited at

twitterのoauthを使ってみる(emailも取得)

More than 3 years have passed since last update.


twitterのoauthとは

よくtwitterでログインというボタンを見ますが仕組み的にはtwitterが用意しているoauthのAPIを使用して実現しています。

このAPIは他にも色々情報をとれるので、今回はユーザID、ユーザ名、ツイート情報以外にメールアドレスも取得してみます。


twitterアカウントの用意

当たり前ですが、アカウントを用意します。

また、APIを使用する際は自分が作成した物をサイトやアプリを登録する必要があります。

登録時には電話番号を設定したアカウントでないと登録できないので電話番号を登録します。

尚、電話番号は前ゼロをとってください。

https://twitter.com/settings/devices

例)

090-****-****

なら

90-****-****

と登録します。


APIキーの発行

デベロッパー用のサイトが

https://apps.twitter.com/

になります。ここでアプリ、サイトの登録を行います。

「Create New App」ボタンを選択し登録します。

アプリ名や説明、またwebsite、また認証後に戻るURLなどを記載します。

一旦登録し、編集にて

「Privacy Policy URL」や「Terms of Service URL」の設定をSettingsから行います。

また、Permissionsでは今回はtwitterの書き込みなどが不要なのでAccessをRead onlyにしています。

APIキーや

APIシークレットは「Keys and Access Tokens」から参照することができます。


メールのパーミッション設定について

メールのパーミッションは通常では設定することができません。

そのため、問い合わせてホワイトリストにいれてもらう必要あります。

https://dev.twitter.com/rest/reference/get/account/verify_credentials

ここに説明がありますが、ここの中の

「please use this form.」のリンクをたどって問い合わせください。

内容的には

「特別な権限へのアクセスが必要です」を選んで

アプリケーション名など全て記載し、「権限がリクエストされました」の項目に「email address」と記載すればよいと思います。私はそれで許可がおりました。

許可には2、3日かかり、メールにて連絡があります。

許可が降りると以下のように項目が増えていますのでチェックを付けて反映します。


phpからの使用方法について

https://twitteroauth.com/

上記のライブラリを使用します。

使用方法は下記を参考にしました。

http://qiita.com/sofpyon/items/982fe3a9ccebd8702867

ただ、上記例のmypage.php中のTwitterOAuthをトークンとシークレットキーを使ってインスタンス化した後の部分で、

下記のようにemailを含む、ツイート不要などのオプションを使用しました。

//ユーザー情報をGET

$user = $connection->get("account/verify_credentials", ['include_entities'=> 'false', 'include_email'=> 'true']);

上記でemailaddrも取得する事ができます。

以上。