20
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-07-26

#twitterのoauthとは
よくtwitterでログインというボタンを見ますが仕組み的にはtwitterが用意しているoauthのAPIを使用して実現しています。
このAPIは他にも色々情報をとれるので、今回はユーザID、ユーザ名、ツイート情報以外にメールアドレスも取得してみます。

##twitterアカウントの用意
当たり前ですが、アカウントを用意します。
また、APIを使用する際は自分が作成した物をサイトやアプリを登録する必要があります。
登録時には電話番号を設定したアカウントでないと登録できないので電話番号を登録します。
尚、電話番号は前ゼロをとってください。

例)
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日かかり、メールにて連絡があります。

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

##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も取得する事ができます。

以上。

20
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?