web-dev-qa-db-ja.com

OAuthを使用してユーザーのTwitter IDを確認した後、ユーザーのメールIDを取得する方法はありますか?

私はOAuthが初めてであり、Twitter APIをいじくり回しています。認証後にhttp://api.Twitter.com/1/account/verify_credentials.xml。応答には、ユーザーID、スクリーン名などが含まれますが、メールIDは含まれません。

ユーザーのメールIDを取得することはまったく可能ですか?

更新

拡張アクセス許可 を特にリクエストした場合、Facebookはこの情報を提供すると考えています。 Twitterに似たようなものはありますか?

85
Manoj Govindan

APIを介してユーザーのメールアドレスを取得することはできません。これは、APIチームによる意図的な設計上の決定です。

UPDATE 2015.08.18:

ユーザーにメールアドレスをリクエストすることは可能ですが、アプリをホワイトリストに登録する必要があります。 API呼び出しの詳細については https://dev.Twitter.com/rest/reference/get/account/verify_credentials を、アプリのホワイトリスト登録を要求するには この形式 を参照してください。

106
DWRoelands

OutsourceFactor の場合、Python/Django、oAuth1を介してユーザー名を取得し、メールアドレスを「[email protected]」として作成します。 Twitter全体で一​​意であり、それからハッシュを使用して、ローカルユーザーアカウントに関連付けられて使用されるNice UUIDを取得します。Yahooと同じことです。GoogleとFacebookはoAuth2を使用します。

1つのアカウントで複数のソーシャルアソシエーションを確保するために、ユーザーがローカルでアカウントを作成してログインした後にのみ、ソーシャルアカウントアソシエーションを許可します。

したがって、最初にアカウント(ローカルアカウント)を作成する必要があります。その後、ソーシャルoAuthプロバイダーのいずれかを使用して、将来のログインを容易にすることができます。 。

とにかく、あなたはTwitterから何らかのユニークな形式のIDを取得します。それを使ってください。後で、または関連付けの前にメールアドレスを要求できます。

16
un33k

メールアドレスは、TwitterのOAuth応答で難読化されています。これは、「Twitterに登録」機能を含めたい人にとって常に大きな問題でした。

より最近(2015年初頭)、Twitterは2回目のサービスコールを通じてメールアドレスのサポートを追加しましたが、特定の悪用された条件の下で。

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

だから今は可能ですが、私の意見はOAuth every-provider-but-Twitterシングルサインオンを実装し続けることです。彼らは正常に行動するまでボイコットしなければなりません。その他OAuthプロバイダー。

3
Moonchild

Android using Fabric で、ユーザーのメールアドレスを次のようにリクエストします。

TwitterAuthClient authClient = new TwitterAuthClient();

authClient.requestEmail(session, new Callback<String>() {

    @Override
    public void success(Result<String> result) {
        // Do something with the result, which provides the email address
    }

    @Override
    public void failure(TwitterException exception) {
      // Do something on failure
    }
});

http://docs.fabric.io/Android/Twitter/request-user-email-address.html を参照してください

3
Paul Muriithi

私の場合、応答を取得するたびに、すべてのユーザーに対して一意の認証IDを取得し、そのユーザーに対しても同じ認証IDを取得しました。そのため、そのidを使用して[email protected]のようなメールを作成し、それが既に自分のサイトにあるかどうかを確認し(初めてではない)、ユーザーを登録します。その後、彼が2回目にログインする場合、私は再びメールを作成し、すでにメールがそこにあるかどうかを確認します。これにより、最初に彼にローカルアカウントを作成させる必要はなく、ログインするために彼を識別することができます。

1
Mehedi Hasan

LaravelでTwitterユーザーのメールを取得する方法の例を次に示します。 coditty.com では、Angular + Laravelを使用して完全な例を見つけることができます。

 // get token secret from db 
        $token = TwitterTokens::where('oauth_token', $request->input('oauth_token'))->first(); 


        // open Twitter connection
        $connection = new \Abraham\TwitterOAuth\TwitterOAuth(
                        $this->Twitter_consumer_key, 
                        $this->Twitter_secret, 
                        $request->input('oauth_token'), 
                        $token->oauth_token_secret// Twitter secret from DB
                        );

        // get acces token
        $access_token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $request->input('oauth_verifier')]); 

         // new TwitterOAuth instance to get email
        $twitterOAuth = new \Abraham\TwitterOAuth\TwitterOAuth( $this->Twitter_consumer_key, $this->Twitter_secret, $access_token['oauth_token'], $access_token['oauth_token_secret'] );

        // Let's get the user's info with email
        $twitterUser = $twitterOAuth->get('account/verify_credentials', ['include_entities' => 'false','include_email'=>'true','skip_status'=>'true',]);


        // output user object from Twitter in your Log file
        Log::info(['user'=>$twitterUser]);
1
Igor Simic

このコードを追加してください!

$params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');

`$data = $connection->get('account/verify_credentials', $params); // get the data`

// getting Twitter user profile details $twt_id = $data->id; //Twitter user id $twt_email = $data->email; //Twitter user email

完全な手順をチェックアウト ここ.

0
Pran

ユーザーのメールを取得できないと言う人は、「ユーザーにメールアドレスをリクエストする」チェックボックスは、 apps.Twitter.com のアプリ権限で利用できます。メールアドレスへのアクセスを機能させるには、アプリの設定でプライバシーポリシーのURLと利用規約のURLフィールドに入力する必要があります。有効にすると、ユーザーは oauth/authorize ダイアログを介して、アプリが自分のメールアドレスにアクセスできることを通知されます。

0

それは不可能だと誰が言ったのか???

アプリをホワイトリストに登録した後、iOSアプリにアクセスしました。私の答えを確認してください こちら

0
NSPratik