क्या OAuth का उपयोग करके अपने ट्विटर पहचान की पुष्टि करने के बाद उपयोगकर्ता की ईमेल आईडी प्राप्त करने का कोई तरीका है?


85

मैं OAuth में नया हूं और ट्विटर एपीआई के साथ खेल रहा हूं। मैं अनुरोध करने के बाद प्रमाणीकरण के बाद किसी उपयोगकर्ता की साख प्राप्त करने में सक्षम हूं http://api.twitter.com/1/account/verify_credentials.xml। प्रतिक्रिया में उपयोगकर्ता आईडी, स्क्रीन का नाम आदि होता है, लेकिन ईमेल आईडी नहीं।

क्या उपयोगकर्ता की ईमेल आईडी को पुनः प्राप्त करना संभव है?

अपडेट करें

मेरा मानना ​​है कि फेसबुक यह जानकारी प्रदान करता है यदि आप विशेष रूप से विस्तारित अनुमति के लिए अनुरोध करते हैं । क्या ट्विटर के लिए भी कुछ ऐसा ही है?


@Pipip:: PI सहमत है और मुझे संदेह है कि वहाँ नहीं है, लेकिन मैं जाँच करना चाहता था और वापस रिपोर्ट करने के लिए कौन कौन हस्ताक्षर करता है।
मनोज गोविंदन

2
@ पिलिप पॉटर आप ऐसा क्यों कहते हैं? ईमेल पता अधिकांश ओउथ प्रदाताओं के बीच संदर्भ का प्रमुख बिंदु है। यदि आपके पास 3rd पार्टी लॉगिन कार्यक्षमता वाली वेबसाइट है (जैसे कि यह वेबसाइट) और ट्विटर में कोई उपयोगकर्ता लॉग इन करता है, तो केवल विशिष्ट पहचानकर्ता जिसका उपयोग किया जा सकता है वह user_id है। यदि अगली बार उपयोगकर्ता आता है और Google के साथ लॉग इन करता है तो आपके पास यह जानने का कोई तरीका नहीं है कि यह पहले जैसा उपयोगकर्ता है। हालाँकि, यदि दो अलग-अलग तृतीय पक्ष प्रदाता एक ईमेल पता देते हैं, तो हम यह सुनिश्चित कर सकते हैं कि यह एक ही व्यक्ति है (जब तक कि ईमेल पता तृतीय पक्ष द्वारा सत्यापित हो)
mulllhausen

@mulllhausen एक ही व्यक्ति के वैसे भी अलग-अलग ईमेल अकाउंट हो सकते हैं। ईमेल विकल्प के पास है, हालांकि यह सिर्फ अच्छा है। आपके द्वारा ईमेल पते पर भरोसा करने के बजाय एक प्रदाता के माध्यम से प्रमाणित होने के बाद मैं कई खातों को एक साथ जोड़े रखने की क्षमता में सेंध लगाऊंगा। मैं सिर्फ इतना कह रहा हूं कि आपके पास क्या है।
जेसन सेब्रिंग

जवाबों:


106

उपयोगकर्ता के ईमेल पते को एपीआई के माध्यम से पुनर्प्राप्त नहीं किया जा सकता है। यह एपीआई टीम द्वारा एक जानबूझकर डिजाइन निर्णय है।

अद्यतन 2015.08.18:

उपयोगकर्ताओं से ईमेल पते का अनुरोध करना संभव है, लेकिन इसके लिए आपके ऐप को श्वेतसूची में रखना आवश्यक है। देखें https://dev.twitter.com/rest/reference/get/account/verify_credentials API कॉल और के विवरण के लिए इस प्रपत्र अपने अनुप्रयोग के श्वेत सूची बनाती अनुरोध करने के लिए।


11
क्या हम इसे बग के रूप में दर्ज कर सकते हैं, मुझे प्रमाणित उपयोगकर्ता के ईमेल पते की आवश्यकता है?
iMOBDEV

9
बहुत बुरा और जैसा कि आपने कहा है, एक जानबूझकर निर्णय। यदि आप किसी को ऑटिस्टिक कर रहे हैं और आपका अपना उपयोगकर्ता डेटाबेस है, तो आपको यह जाँचने की आवश्यकता है कि क्या मौजूदा उपयोगकर्ता (उसी ई-मेल के साथ) पहले से मौजूद है।
कीने वियाना

4
@JigneshBrahmkhatri मैं अपने आवेदन में अपने मौजूदा उपयोगकर्ता मॉडल के साथ एक ही मुद्दा था जिसके लिए एक ई-मेल पते की आवश्यकता थी। मैंने तय किया कि अतिरिक्त कदम उठाकर उपयोगकर्ता को गुम जानकारी को पूरा करने के लिए एक रूप दिखाऊंगा।
केनी मेयर

24
@KennyM। यह बहुत सुरक्षित नहीं है, मैं सिर्फ कुछ खाते के ईमेल में टाइप कर सकता हूं जो मेरा नहीं है और उस खाते में जोड़ा जा सकता है ...
ब्रायन ग्राहम

3
जब कोई उपयोगकर्ता ट्विटर के साथ साइन इन करता है, तो मुझे उन्हें एक ईमेल पता भी दर्ज करने की आवश्यकता होती है, फिर अपने खाते को सक्रिय करने से पहले उन्हें सत्यापित कर लें। मूल रूप से मैं उन्हें पासवर्ड की आवश्यकता के बजाय अपने ट्विटर खाते का उपयोग करने दे रहा हूं।
गूस शॉर्ट्ज़

16

के लिए OutsourceFactor , जो अजगर / Django में लिखा है, मैं OAuth1 के माध्यम से उपयोगकर्ता नाम मिलता है, तो के रूप में "username@twitter.com" जो चहचहाना भर अद्वितीय होने की गारंटी है ईमेल बनाने। तब मुझे इसका उपयोग करने के लिए एक अच्छा UUID प्राप्त करने और अपने स्थानीय उपयोगकर्ता खाते से संबद्ध करने के लिए हैश करना चाहिए। याहू के लिए एक ही बात है। Google और Facebook oAuth2 का उपयोग करते हैं और वे मुझे अनुरोध पर ईमेल पता देते हैं जो अच्छा है।

एक ही खाते के साथ कई सामाजिक संघों को सुनिश्चित करने के लिए, मैं केवल उपयोगकर्ता द्वारा स्थानीय रूप से एक खाता बनाने और लॉग इन करने के बाद सामाजिक खाता संघों की अनुमति देता हूं।

तो, आपको पहले एक खाता बनाना होगा (स्थानीय खाता), फिर आप अपने भविष्य के लॉगिन को कम करने के लिए किसी भी सामाजिक oAuth प्रदाताओं का उपयोग कर सकते हैं। यह मेरी साइट के लिए हिरन के लिए सबसे अच्छा बैंग है।

वैसे भी, आपको ट्विटर से आईडी का कुछ अनोखा रूप मिलता है। तो बस इसका इस्तेमाल करें। आप बाद में या एसोसिएशन से पहले ईमेल पता पूछ सकते हैं।


4
"प्रदाता आपके भविष्य के लॉगिन को कम करने के लिए", मैं इससे सहमत नहीं हूं, क्योंकि आपने पहले ही उन्हें एक बहुत बड़ा रूप दिखा कर स्थानीय खाता बनाने के लिए कहकर परेशानी दी है जिसे भरने के लिए ग्राहक हमेशा नापसंद करते हैं।
RJR

@RJR खैर, ट्विटर आपको ईमेल एड्रेस नहीं दे रहा है। तो आपको इसे वैसे भी माँगना होगा। मेरे मामले में, मैं पासवर्ड माँगता हूँ जबकि मैं उस पर हूँ। आपके पास विभिन्न आवश्यकताओं के साथ एक साइट हो सकती है, और यह ठीक भी है।
un33k

3

ईमेल पता उनके OAuth प्रतिक्रियाओं में ट्विटर द्वारा बाधित है। जो हमेशा "ट्विटर के साथ रजिस्टर" फ़ंक्शन को शामिल करने के इच्छुक लोगों के लिए एक बड़ा मुद्दा रहा है।

अभी हाल ही में (2015 की शुरुआत में), ट्विटर ने एक दूसरे सर्विस कॉल के माध्यम से ईमेल एड्रेस सपोर्ट जोड़ा है, लेकिन कुछ शर्तों के तहत, दुरुपयोग की स्थिति में।

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

तो अब यह संभव है, लेकिन मेरी राय है कि एक OAuth को हर प्रदाता-लेकिन-ट्विटर पर एकल चिह्न लागू करना जारी रखें। उन्हें तब तक बहिष्कार किया जाना चाहिए जब तक वे सामान्य रूप से कार्य नहीं करते हैं, मेरा मतलब है कि हर एक अन्य OAuth प्रदाता की तरह।


3

फैब्रिक का उपयोग करते हुए एंड्रॉइड में , मैं उपयोगकर्ता के ईमेल पते का अनुरोध करता हूं:

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 देखें


हाँ, मैं एंड्रॉइड के लिए एक ही काम करता हूं, लेकिन वेब में ईमेल पता प्राप्त करने में असमर्थ हूं। मैं इस लिंक का पालन करके ईमेल पते का अनुरोध भी प्रस्तुत करता हूं। devitter.rest/rest/reference/get/account/verify_credentials
मुहम्मद वकास

1

मेरे मामले में हर बार जब मुझे प्रतिक्रिया मिलती है तो मुझे हर उपयोगकर्ता के लिए एक अद्वितीय प्रमाणीकरण आईडी मिलती है और हर बार उस उपयोगकर्ता के लिए भी। इसलिए मैंने उस आईडी का उपयोग unique_id@twitter.com की तरह एक ईमेल बनाने के लिए किया और जांच की कि क्या वह मेरी साइट पर पहले से ही है (पहली बार ऐसा नहीं है) और फिर उपयोगकर्ता को पंजीकृत करें। फिर अगर वह दूसरी बार लॉगिन करता है तो मैं फिर से ईमेल बनाता हूं और जांचता हूं कि क्या यह पहले से ही वहां पर है। इसके द्वारा मुझे पहले उसे एक स्थानीय खाता बनाने की आवश्यकता नहीं है और उसे लॉगिन करने के लिए पहचान कर सकते हैं।


1

यहाँ उदाहरण है कि लारवेल में ट्विटर उपयोगकर्ता ईमेल कैसे प्राप्त करें, और coditty.com पर आप कोणीय लारवेल का उपयोग करके पूर्ण उदाहरण पा सकते हैं।

 // 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
संभावित समाधान का लिंक हमेशा स्वागत योग्य है, लेकिन कृपया लिंक के चारों ओर संदर्भ जोड़ें , ताकि आपके साथी उपयोगकर्ताओं को यह पता चले कि यह क्या है और यह क्यों है। हमेशा एक महत्वपूर्ण लिंक का सबसे प्रासंगिक हिस्सा उद्धृत करें, यदि लक्ष्य साइट अप्राप्य है या स्थायी रूप से ऑफ़लाइन है। इस बात पर ध्यान दें कि किसी बाहरी साइट की लिंक से मुश्किल से अधिक होना एक संभावित कारण है कि कुछ उत्तरों को क्यों और कैसे हटाया जाता है?
तुनकी

0

किसने कहा यह संभव नहीं है ???

मैंने ऐप को श्वेत करने के बाद अपने iOS ऐप में प्राप्त किया है। यहां मेरे उत्तर की जांच करें


0

इस कोड को जोड़ें!

$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

कौन कहता है कि आप उपयोगकर्ताओं को ईमेल नहीं कर सकते हैं, "उपयोगकर्ताओं से ईमेल पते का अनुरोध करें" चेकबॉक्स apps.twitter.com पर ऐप अनुमतियों के तहत उपलब्ध है । गोपनीयता नीति URL और सेवा URL फ़ील्ड की शर्तें ईमेल पता तक कार्य करने के लिए ऐप सेटिंग में पूरी होनी चाहिए। यदि सक्षम है, तो उपयोगकर्ताओं को oauth / अधिकृत संवाद के माध्यम से सूचित किया जाएगा कि आपका ऐप उनके ईमेल पते पर पहुंच सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.