Twitter oAuth callbackUrl - लोकलहोस्ट डेवलपमेंट


112

क्या किसी और के लिए मुश्किल समय आ रहा है जो अपने स्थानीय विकास के माहौल को हिट करने के लिए ट्विटर्स ओथ के कॉलबैक URL को प्राप्त कर रहा है। जाहिरा तौर पर इसे हाल ही में अक्षम कर दिया गया है। http://code.google.com/p/twitter-api/issues/detail?id=534#c1

क्या किसी के पास वर्कअराउंड है। मैं वास्तव में अपने विकास को रोकना नहीं चाहता


यह मेरे लिए मेरी वास्तविक वेबसाइट यूआरएल को ट्विटर कॉलबैक यूआरएल सेट करके मेरे लिए काम किया। लोकलहोस्ट में परीक्षण करते समय -> ट्विटर साइनअप, लोकलहोस्ट पर पुनर्निर्देशित (वेबसाइट यूआरएल के बजाय)।
सुधाकर कृष्णन

जवाबों:


135

वैकल्पिक 1।

अपने लोकलहोस्ट आईपी के लिए एक लाइव डोमेन को इंगित करने के लिए अपने .hosts (विंडोज) या आदि / होस्ट्स फ़ाइल को सेट करें। जैसे कि:

127.0.0.1 xyz.com

जहाँ xyz.com आपका असली डोमेन है।

वैकल्पिक 2।

इसके अलावा, लेख एक यूआरएल शॉर्टनर सेवा का वैकल्पिक रूप से उपयोग करने के लिए टिप देता है। अपने स्थानीय URL को छोटा करें और कॉलबैक के रूप में परिणाम प्रदान करें।

वैकल्पिक 3।

इसके अलावा, ऐसा लगता है कि यह http://127.0.0.1:8080ट्विटर पर कॉलबैक के रूप में उदाहरण के लिए प्रदान करने के लिए काम करता है , इसके बजाय http://localhost:8080


3
क्या यह निम्न त्रुटि का कारण हो सकता है: दूरस्थ सर्वर ने एक त्रुटि दी: (401) अनधिकृत?
देववेद

जब कोई सुरंग नहीं है, तो लोकलहोस्ट कैसे काम करता है? यह वास्तव में उर स्थानीय मशीन हिट नहीं करता है?
जैक टक

@JackTuck कॉलबैक उपयोगकर्ता के ब्राउज़र द्वारा कहा जाता है, ट्विटर के सर्वर द्वारा नहीं।
शराबी

25

मुझे यह पिछले हफ्ते ही करना था। जाहिरा तौर पर localhostकाम नहीं करता है, लेकिन 127.0.0.1गो आंकड़ा है।

यह निश्चित रूप से मानता है कि आप ट्विटर के साथ दो ऐप रजिस्टर कर रहे हैं, एक आपके लाइव के लिए www.mysite.comऔर दूसरा इसके लिए 127.0.0.1


10

बस कॉलबैक यूआरएल के रूप में http://127.0.0.1:xxxx/ डालें , जहां xxxx आपके फ्रेमवर्क के लिए पोर्ट है


8

हां, हाल ही में सुरक्षा मुद्दे के कारण इसे निष्क्रिय कर दिया गया था जो OAuth में पाया गया था। अब के लिए एकमात्र समाधान दो OAuth अनुप्रयोगों का निर्माण करना है - एक उत्पादन के लिए और एक विकास के लिए। विकास एप्लिकेशन में आप लाइव के बजाय अपना लोकलहोस्ट कॉलबैक URL सेट करते हैं।


मैंने बस ऐसा करने की कोशिश की, लेकिन यह स्थानीयहोस्ट को स्वीकार नहीं करता है : 3000 एक URL प्रारूप के रूप में ...
डेविड एन। वेल्टन

1
हां, वे ऐसे URL को फ़िल्टर करते हैं। :( लेकिन कस्टम कॉलबैक यूआरएल के लिए समर्थन वापस आ गया है - शायद वे वहाँ समर्थित हैं।
arikfr

8

कॉलबैक URL संपादित किया गया

http://localhost:8585/logintwitter.aspx

में बदलें

http://127.0.0.1:8585/logintwitter.aspx

7

मैंने इस तरह से इसे किया:

पंजीकृत कॉलबैक URL: http://127.0.0.1/Callback.aspx

   OAuthTokenResponse authorizationTokens = 
        OAuthUtility.GetRequestToken(ConfigSettings.getConsumerKey(), 
                                     ConfigSettings.getConsumerSecret(), 
                                     "http://127.0.0.1:1066/Twitter/Callback.aspx");

ConfigSettings:

public static class ConfigSettings
{
    public static String getConsumerKey()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    }

    public static String getConsumerSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    }

}

web.config:

<appSettings>

    <add key="ConsumerKey" value="xxxxxxxxxxxxxxxxxxxx"/>
    <add key="ConsumerSecret" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>

</appSettings>

सुनिश्चित करें कि आप अपने प्रोजेक्ट की 'डायनेमिक पोर्ट्स का उपयोग करने वाली प्रॉपर्टी' को 'गलत' पर सेट करें और इसके बजाय एक स्टैटिक पोर्ट नंबर दर्ज करें। (मैंने 1066 का इस्तेमाल किया)।

आशा है कि ये आपकी मदद करेगा!


7

Http://smackaho.st का प्रयोग करें

यह 127.0.0.1 के लिए एक साधारण डीएनएस एसोसिएशन है जो आपको लोकलहोस्ट या 127.0.0.1 पर फिल्टर को बायपास करने की अनुमति देता है:

smackaho.st। 28800 में 127.0.0.1

इसलिए यदि आप लिंक पर क्लिक करते हैं, तो यह आपको दिखाएगा कि आपके स्थानीय वेबसर्वर पर आपके पास क्या है (और यदि आपके पास एक नहीं है, तो आपको 404 मिलेगा)। आप निश्चित रूप से इसे अपने इच्छित पेज / पोर्ट पर सेट कर सकते हैं:

http://smackaho.st:54878/twitter/callback


6
smackaho.st अब उपलब्ध नहीं है tbaggery.com/2010/03/04/smack-a-ho-st.html । इसके बजाय lvh.me का उपयोग करें। यह सीधे लोकलहोस्ट पर जाता है।
जस्टिन

5

मैं अपने लोकलहोस्ट पर ट्विटर कॉलबैक यूआरएल के साथ काम कर रहा था। यदि आप सुनिश्चित नहीं हैं कि वर्चुअल होस्ट कैसे बनाएं (यह महत्वपूर्ण है) Ampps का उपयोग करें। वह वास्तव में शांत और आसान है। कुछ ही चरणों में आपका अपना वर्चुअल होस्ट होगा और फिर हर यूआरएल उस पर काम करेगा। उदाहरण के लिए:

  1. डाउनलोड और ampps स्थापित करें

  2. नया डोमेन जोड़ें। (यहां आप उदाहरण के लिए twitter.local पर सेट कर सकते हैं) जिसका अर्थ है कि आपका वर्चुअल होस्ट http: //twitter.local होगा और यह चरण 3 के बाद काम करेगा।

  3. मैं विन पर काम कर रहा हूं इसलिए अपनी होस्ट फ़ाइल के नीचे जाएं -> C: \ Windows \ System32 \ ड्राइवर्स \ etc \ मेजबान और लाइन जोड़ें: 127.0.0.1 twitter.local

अपने Ampps को पुनरारंभ करें और आप अपने कॉलबैक का उपयोग कर सकते हैं। आप किसी भी url को निर्दिष्ट कर सकते हैं, भले ही आप कुछ MVC का उपयोग कर रहे हों या आपके पास htaccess url rewrite हो।

उममीद है कि इससे मदद मिलेगी! चीयर्स।


पारितोषिक के लिए धन्यवाद। लाइनक्स पर, विकास डोमेन नाम को / etc / मेजबान में जोड़ें
jeremyvillalobos

3

जब मैं स्थानीय रूप से विकसित होता हूं, तो मैं हमेशा एक स्थानीय रूप से होस्ट किया गया देव नाम सेट करता हूं जो उस परियोजना को दर्शाता है जिस पर मैं काम कर रहा हूं। मैंने इसे xampp में xampp \ Apache \ conf \ extra \ httpd-vhosts.conf के माध्यम से सेट किया और फिर \ Windows \ System32 \ ड्राइवरों / etc \ Host में भी होस्ट किया।

इसलिए अगर मैं example.com के लिए एक स्थानीय देव साइट स्थापित कर रहा हूँ, तो मैं इसे उन दो फाइलों में example.dev के रूप में स्थापित करूँगा।

संक्षिप्त उत्तर: एक बार जब यह ठीक से सेट हो जाता है, तो आप बस इस url ( http://example.dev ) का इलाज कर सकते हैं जैसे कि आप अपने ट्विटर एप्लीकेशन को सेट करते समय लाइव थे (स्थानीय के बजाय)।

इसी तरह का उत्तर यहां दिया गया था: https://dev.twitter.com/discussions/5749

प्रत्यक्ष भाव (जोर दिया):

आप किसी भी मान्य URL को उस डोमेन नाम के साथ प्रदान कर सकते हैं जिसे हम एप्लिकेशन विवरण पृष्ठ पर पहचानते हैं। OAuth 1.0a के लिए आपको प्रवाह के अनुरोध चरण पर एक oauth_callback मान भेजने की आवश्यकता होती है और हम उस चरण पर एक गतिशील लोकास्ट-आधारित कॉलबैक स्वीकार करेंगे

यह मेरे लिए एक आकर्षण की तरह काम करता था। उम्मीद है की यह मदद करेगा।


3

इसे फिडलर के साथ बहुत आसानी से किया जा सकता है :

  • मेनू उपकरण खोलें > HOSTS ...
  • एक पंक्ति सम्मिलित करें 127.0.0.1 your-production-domain.com, सुनिश्चित करें कि "अनुरोधों के पुन: भरने को सक्षम करें ..." की जाँच की गई है। प्रेस करने के लिए मत भूलना Save
  • यदि आपके वास्तविक उत्पादन सर्वर तक पहुंच की आवश्यकता है, तो बस फिडलर से बाहर निकलें या रीमैपिंग को अक्षम करें।
  • फ़िडलर को फिर से शुरू करने से रीमैपिंग चालू हो जाएगी (यदि इसकी जाँच हो)।

एक सुखद बोनस यह है कि आप इस तरह से एक कस्टम पोर्ट निर्दिष्ट कर सकते हैं: 127.0.0.1:3000 your-production-domain.com(यह मेजबान फ़ाइल के माध्यम से इसे प्राप्त करना असंभव होगा)। इसके अलावा, आईपी के बजाय आप किसी भी डोमेन नाम (जैसे, localhost) का उपयोग कर सकते हैं ।

इस तरह, यह संभव है (लेकिन आवश्यक नहीं) केवल एक बार अपने ट्विटर ऐप को पंजीकृत करने के लिए (बशर्ते कि आप स्थानीय विकास और उत्पादन के लिए समान कुंजियों का उपयोग करने में कोई आपत्ति न करें)।


2

इस फंक्शन को TwitterAPIExchange.php पर लाइन # 180 पर संपादित करें

public function performRequest($return = true)
{
    if (!is_bool($return)) 
    { 
        throw new Exception('performRequest parameter must be true or false'); 
    }

    $header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');

    $getfield = $this->getGetfield();
    $postfields = $this->getPostfields();

    $options = array( 
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_HEADER => false,
        CURLOPT_URL => $this->url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false
    );

    if (!is_null($postfields))
    {
        $options[CURLOPT_POSTFIELDS] = $postfields;
    }
    else
    {
        if ($getfield !== '')
        {
            $options[CURLOPT_URL] .= $getfield;
        }
    }

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    if ($return) { return $json; }
}

आप यहाँ से TwitterAPIExchange.php को github.com/J7mbo/twitter-api-php
हेल्पर

2

मेरे पास एक ही चुनौती थी और मैं वैध कॉलबैक URL के रूप में लोकलहोस्ट नहीं दे पा रहा था। इसलिए मैंने डेवलपर्स को मदद करने के लिए एक सरल डोमेन बनाया: https://tolocalhost.com

यह आपके लोकलहोस्ट डोमेन के लिए किसी भी पथ को रीडायरेक्ट करेगा और आपको आवश्यकता होगी। आशा है कि यह अन्य डेवलपर्स के लिए उपयोग की जा सकती है।


उत्कृष्ट संसाधन, लेकिन आपका डोमेन url के अंत में "/" जोड़ता है जो कुछ अवसरों पर 404 होता है। क्या आप कृपया इसे ठीक कर सकते हैं? उदाहरण के लिए, यह "लोकलहोस्ट / सोमेनेम /? <प्रतिक्रिया> के रूप में रीडायरेक्ट करता है, लेकिन यह" लोकलहोस्ट / सोमेनेम होना चाहिए? <प्रतिक्रिया>
चन्ना

@ चन्ना मैंने इसे पुन: पेश करने की कोशिश की लेकिन ऐसा लगता है कि स्क्रिप्ट सही तरीके से काम करती है। आप कौन सा ब्राउज़र उपयोग कर रहे हैं? मैंने क्रोम, सफारी, फ़ायरफ़ॉक्स की कोशिश की और यह उम्मीद की तरह काम करता है।
जोर्जेन

यह मेरे लिए क्रोम और फ़ायरफ़ॉक्स दोनों में होता है। यह वह होस्टनाम है जो मैंने आपके पृष्ठ " लोकलहोस्ट: 8080 / डैशबोर्ड / twitterRedirect.jsp " में डाला है, लेकिन जब यह रीडायरेक्ट होता है तो यह " लोकलहोस्ट: 8080 / डैशबोर्ड / twitterRedirect.jsp/ ... पर जाता है " कृपया प्रश्न से पहले "/" चिन्ह पर ध्यान दें। निशान। यह मेरे ऐप को 404
चन्ना

1
@ चन्ना आपको पूरा URL होस्टनाम फ़ील्ड में नहीं डालना चाहिए। इसे कहा जाता है: hostname, URL नहीं ;-) यह विचार 'लोकलहोस्ट' को कुछ इस तरह से ओवरराइड करने में सक्षम है: my.localhost.bla तो यह लोकलहोस्ट के बजाय इसका उपयोग करेगा। आपके मामले में मेजबान क्षेत्र को लोकलहोस्ट होना चाहिए। आप 8080 के लिए बंदरगाह की स्थापना की और पर जाने के लिए रीडायरेक्ट कॉन्फ़िगर करें: स्थानीय होस्ट: tolocalhost.com/dashboard/twitterRedirect.jsp इस पर रीडायरेक्ट करेगा 8080 / डैशबोर्ड / twitterRedirect.jsp
Jørgen

2

आजकल लगता है http://127.0.0.1काम करना भी बंद कर दिया। इसका एक सरल समाधान यह है कि http://localtest.meइसके बजाय http://localhostइसका उपयोग हमेशा किया जाता है 127.0.0.1और आप इसे किसी भी मनमाने उपडोमेन के साथ जोड़ सकते हैं, और यह अभी भी इंगित करेगा127.0.0.1

वेबसाइट देखें


1

ट्विटर ऐप में कॉलबैकर्ल सेट करें: 127.0.0.1:3000 और WEBrick को 127.0.0.1 के बजाय 0.0.0.0 पर बांधने के लिए सेट करें

कमांड: रेल s -b 127.0.0.1


1

ऐसा लगता है कि ट्विटर अब सेटिंग्स localhostमें आपके पास जो कुछ भी है, उसके साथ अनुमति देता है Callback URL, इसलिए जब तक वहाँ एक मूल्य है।


1

मैंने इसके साथ संघर्ष किया और एक दर्जन समाधानों का पालन किया, अंत में मुझे स्थानीय होस्ट पर किसी भी ssl एप के साथ काम करना था:

डाउनलोड करें: cacert.pem फ़ाइल

में php.ini* संयुक्त राष्ट्र टिप्पणी और परिवर्तन: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • आप अपने सीएलआई में चलकर यह पता लगा सकते हैं कि php.iniआपकी मशीन आपकी मशीन पर कहां हैphp --ini
  • मैंने अपनी cacert.pem को उसी डायरेक्टरी में रखा जो php.ini में आसानी के लिए है।

1

ये वो कदम हैं जिन्होंने मेरे लैपटॉप पर स्थानीय एप्लिकेशन के साथ काम करने के लिए फेसबुक को काम करने के लिए काम किया है:

  • goto apps.twitter.com
  • नाम, एप्लिकेशन विवरण और अपनी साइट का URL दर्ज करें नोट: लोकलहोस्ट के लिए: 8000, 127.0.0.1:8000 का उपयोग करें क्योंकि पूर्व काम नहीं करेगा
  • अपने आवेदन में TWITTER_REDIRECT_URI से परिभाषित आपके कॉलबैक URL से मेल करने वाले कॉलबैक URL दर्ज करें: नोट: जैसे: http://127.0.0.1/login/twitter/callback (लोकलहोस्ट काम नहीं करेगा)।
  • महत्वपूर्ण यदि आप उपयोगकर्ता के ईमेल पते अनुरोध करना चाहते हैं दोनों "गोपनीयता नीति" और यूआरएल "उपयोग की शर्तें" दर्ज
  • शर्तों को चेकबॉक्स से सहमत होने की जाँच करें
  • [अपना ट्विटर एप्लिकेशन बनाएं] पर क्लिक करें
  • शीर्ष पर स्थित [कुंजी और एक्सेस टोकन] टैब पर जाएं
  • अपने आवेदन में TWITTER_KEY और TWITTER_SECRET को "उपभोक्ता कुंजी (एपीआई कुंजी)" और "उपभोक्ता रहस्य (एपीआई गुप्त)" की प्रतिलिपि बनाएँ
  • "अनुमतियाँ" टैब पर क्लिक करें और "केवल पढ़ने के लिए", "पढ़ें और लिखें" या "पढ़ने, लिखने और प्रत्यक्ष संदेश" के लिए उचित रूप से सेट करें (अपने आवेदन के लिए आवश्यक कम से कम घुसपैठ विकल्प का उपयोग करें, सिर्फ और सिर्फ ऑउथ लॉगिन के लिए "केवल पढ़ें") पर्याप्त
  • "अतिरिक्त अनुमतियाँ" के तहत, "उपयोगकर्ताओं से ईमेल पते का अनुरोध करें" चेकबॉक्स चेक करें यदि आप उपयोगकर्ता के ईमेल पते को OAuth लॉगिन डेटा पर लौटना चाहते हैं (ज्यादातर मामलों में हाँ की जाँच करें)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.