Twitter oAuth callbackUrl - localhost geliştirme


112

Twitters oAuth'un geri arama URL'sini localhost geliştirme ortamına ulaştırmakta zorlanan başka biri var mı? Görünüşe göre yakın zamanda devre dışı bırakılmış. http://code.google.com/p/twitter-api/issues/detail?id=534#c1

Herkesin bir çözümü var mı? Gelişimimi gerçekten durdurmak istemiyorum


Twitter geri arama url'sini gerçek web siteme url olarak ayarlayarak benim için çalıştı. Localhost -> twitter kaydında test ederken, localhost'a (web sitesi url'si yerine) yönlendirilir.
Sudhakar Krishnan

Yanıtlar:


135

Alternatif 1.

.Hosts (Windows) veya etc / hosts dosyanızı yerel ana bilgisayar IP'nize canlı bir etki alanını işaret edecek şekilde ayarlayın. gibi:

127.0.0.1 xyz.com

xyz.com gerçek alan adınızdır.

Alternatif 2.

Ayrıca makale, alternatif olarak bir URL kısaltıcı hizmeti kullanma ipucunu veriyor. Yerel URL'nizi kısaltın ve sonucu geri arama olarak sağlayın.

Alternatif 3.

Ayrıca, bunun http://127.0.0.1:8080yerine örneğin Twitter'a geri arama sağlamak için çalışıyor gibi görünüyor http://localhost:8080.


3
Bu, aşağıdaki hataya neden olabilir: Uzak sunucu bir hata döndürdü: (401) Yetkisiz mi?
DevDave

Tünel olmadığında localhost nasıl çalışır? Aslında yerel makinenize çarpmıyor mu?
Jack Tuck

@JackTuck Geri arama, Twitter sunucuları tarafından değil, kullanıcının tarayıcısı tarafından çağrılır.
kabarık

25

Bunu geçen hafta yapmak zorundaydım. Görünüşe göre localhostçalışmıyor ama 127.0.0.1Go anlamıyor .

Bu tabii Twitter ile iki uygulamalarınızı, canlı bir tane kayıt varsayar www.mysite.comiçin ve başka 127.0.0.1.



8

Evet, OAuth'ta bulunan son güvenlik sorunu nedeniyle devre dışı bırakıldı. Şimdilik tek çözüm, biri üretim, diğeri geliştirme için olmak üzere iki OAuth uygulaması oluşturmaktır. Geliştirme uygulamasında, canlı olan yerine localhost geri arama URL'nizi ayarlarsınız.


Bunu yapmayı denedim, ancak URL biçimi olarak localhost: 3000'i kabul etmiyor ...
David N. Welton

1
Evet, bu tür URL'leri filtreliyor gibi görünüyorlar. :( Ancak özel geri arama url'leri için destek geri döndü - belki orada destekleniyorlar.
arikfr

8

Geri arama URL'si düzenlendi

http://localhost:8585/logintwitter.aspx

E dönüşmek

http://127.0.0.1:8585/logintwitter.aspx

7

Ben böyle yaptım:

Kayıtlı Geri Arama URL'si: 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>

Projenizin 'dinamik bağlantı noktalarını kullan' özelliğini 'yanlış' olarak ayarladığınızdan ve bunun yerine statik bir bağlantı noktası numarası girdiğinizden emin olun. (1066 kullandım).

Umarım bu yardımcı olur!


7

Http://smackaho.st kullanın

Yaptığı şey, localhost veya 127.0.0.1'deki filtreleri atlamanıza izin veren 127.0.0.1'e basit bir DNS ilişkilendirmesidir:

smackaho.st. 127.0.0.1 İÇİNDE 28800

Dolayısıyla, bağlantıya tıklarsanız, yerel web sunucunuzda ne olduğunu size gösterecektir (ve eğer sahip değilseniz, bir 404 alacaksınız). Elbette istediğiniz herhangi bir sayfaya / bağlantı noktasına ayarlayabilirsiniz:

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


6
smackaho.st artık tbaggery.com/2010/03/04/smack-a-ho-st.html değildir . Bunun yerine lvh.me kullanın. Doğrudan localhost'a gider.
Justin

5

Yerel ana makinemde Twitter geri arama url'si ile çalışıyordum. Bir sanal konağın nasıl oluşturulacağından emin değilseniz (bu önemlidir) Ampps kullanın. Gerçekten havalı ve kolay. Birkaç adımda kendi sanal ana makinenize sahip olursunuz ve ardından her url üzerinde çalışacaktır. Örneğin:

  1. amfi indir ve yükle

  2. Yeni alan ekleyin. (burada örneğin twitter.local ayarlayabilirsiniz) bu, sanal ana makinenizin http: //twitter.local olacağı ve 3. adımdan sonra çalışacağı anlamına gelir .

  3. Win üzerinde çalışıyorum, bu yüzden ana bilgisayar dosyanıza gidin -> C: \ Windows \ System32 \ Drivers \ etc \ hosts ve şu satırı ekleyin: 127.0.0.1 twitter.local

Amperinizi yeniden başlatın ve geri aramayı kullanabilirsiniz. Bazı çerçeve MVC'leri kullanıyor olsanız veya htaccess url yeniden yazmış olsanız bile herhangi bir url belirtebilirsiniz.

Umarım bu yardımcı olur! Şerefe.


Bahşiş için teşekkürler. Linux'ta, geliştirme alan adını / etc /
hosts'a ekleyin

3

Yerel olarak geliştirdiğimde, üzerinde çalıştığım projeyi yansıtan, her zaman yerel olarak barındırılan bir geliştirici adı belirlerim. Bunu xampp'de xampp \ apache \ conf \ extra \ httpd-vhosts.conf ve ardından \ Windows \ System32 \ drivers \ etc \ hosts içinde kurdum.

Yani ornek.com için yerel bir geliştirme sitesi kuruyorsam, bu iki dosyada ornek.dev olarak kurardım.

Kısa Cevap: Bu doğru bir şekilde ayarlandıktan sonra, Twitter Uygulamanızı kurarken bu url'yi ( http://example.dev ) canlıymış gibi (yerel yerine) ele alabilirsiniz.

Burada benzer bir cevap verildi: https://dev.twitter.com/discussions/5749

Doğrudan Alıntı (vurgu eklendi):

Uygulama ayrıntıları sayfasında tanıdığımız bir alan adıyla herhangi bir geçerli URL'yi sağlayabilirsiniz. OAuth 1.0a, akışın istek jetonu adımında bir oauth_callback değeri göndermenizi gerektirir ve bu adımda dinamik yerel konum tabanlı geri aramayı kabul ederiz .

Bu benim için bir büyü gibi çalıştı. Bu yardımcı olur umarım.


3

Fiddler ile çok rahat bir şekilde yapılabilir :

  • Araçlar> HOSTS menüsünü açın ...
  • Şöyle bir satır ekleyin 127.0.0.1 your-production-domain.com, "İsteklerin yeniden eşlenmesini etkinleştir ..." seçeneğinin işaretli olduğundan emin olun. Basmayı unutma Save.
  • Gerçek üretim sunucunuza erişim gerekiyorsa, Fiddler'dan çıkmanız veya yeniden eşlemeyi devre dışı bırakmanız yeterlidir.
  • Fiddler'ı yeniden başlatmak, yeniden eşlemeyi açacaktır (işaretlenmişse).

Hoş bir bonus, şunun gibi özel bir bağlantı noktası belirlemenizdir: 127.0.0.1:3000 your-production-domain.com(bunu ana bilgisayar dosyası aracılığıyla elde etmek imkansızdır). Ayrıca, IP yerine herhangi bir alan adı da kullanabilirsiniz (örn localhost.).

Bu şekilde, Twitter uygulamanızı yalnızca bir kez kaydettirmek mümkündür (ancak gerekli değildir) (yerel geliştirme ve üretim için aynı anahtarları kullanmaktan çekinmemeniz koşuluyla).


2

TwitterAPIExchange.php'de bu işlevi # 180 satırında düzenleyin

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'yi buradan github.com/J7mbo/twitter-api-php
Helper

2

Aynı zorluğu yaşadım ve localhost'u geçerli bir geri arama URL'si olarak veremedim. Bu yüzden geliştiricilere yardımcı olmak için basit bir alan oluşturdum: https://tolocalhost.com

Herhangi bir yolu localhost etki alanınıza ve ihtiyacınız olan bağlantı noktasına yönlendirecektir. Umarım diğer geliştiriciler için yararlı olabilir.


Mükemmel bir kaynak, Ancak etki alanınız url'nin sonuna "/" ekleyerek bazı durumlarda 404'e yol açar. düzeltebilir misin lütfen? Örneğin, "localhost / somename /? <response> olarak yönlendiriyor, ancak" localhost / somename? <response>
Channa

@Channa Bunu yeniden oluşturmaya çalıştım ama görünüşe göre komut dosyası doğru çalışıyor. Hangi tarayıcıyı kullanıyorsunuz? Chrome, Safari, Firefox'u denedim ve beklendiği gibi çalışıyor.
Jørgen

Hem Chrome'da hem de Firefox'ta bana oluyor. Bu, sayfanıza koyduğum ana makine adıdır " localhost: 8080 / dashboard / twitterRedirect.jsp " Ancak yeniden yönlendirildiğinde " localhost: 8080 / dashboard / twitterRedirect.jsp /… " adresine gider Lütfen sorudan önce "/" sembolünü not edin işaret. Uygulamamın bana 404 göndermesine neden olacak
Channa

1
@Channa, tüm URL'yi ana bilgisayar adı alanına koymamalısınız. Adı: ana bilgisayar adı, URL değil ;-) "localhost" yerine 'localhost'u geçersiz kılabilmektir: my.localhost.bla o zaman localhost yerine onu kullanacaktır. Sizin durumunuzda, ana bilgisayar alanının localhost olması gerekir. Bağlantı noktasını 8080 olarak ayarladınız ve yönlendirmeyi şu adrese gidecek şekilde yapılandırdınız: tolocalhost.com/dashboard/twitterRedirect.jsp bu, şuraya yönlendirilecek: localhost: 8080 / dashboard / twitterRedirect.jsp
Jørgen

2

Görünüşe göre bugünlerde http://127.0.0.1de çalışmayı bıraktı. Basit bir çözüm, her zaman işaret etmek http://localtest.meyerine kullanmaktır.Ve http://localhostbuna 127.0.0.1rastgele herhangi bir alt etki alanı bile ekleyebilirsiniz ve yine de127.0.0.1

Web Sitesine Bakın


1

twitter uygulamasında callbackurl'yi ayarlayın: 127.0.0.1:3000 ve WEBrick'i 0.0.0.0 yerine 127.0.0.1'e bağlanacak şekilde ayarlayın

komut: raylar s -b 127.0.0.1


1

Görünüşe göre Twitter artık ayarlarda localhostsahip olduğunuz her şeyin yanında Callback URL, orada bir değer olduğu sürece izin veriyor .


1

Bununla mücadele ettim ve bir düzine çözümü takip ettim, sonunda yerel ana bilgisayardaki herhangi bir ssl apis ile çalışmak için yapmam gereken tek şey şuydu:

İndirin : cacert.pem dosyası

In php.ini* un-yorumun ve değişim: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • php.iniDosyanızın makinenizde nerede php --iniolduğunu CLI'nizde çalıştırarak bulabilirsiniz .
  • Kolaylık olması için cacert.pem'imi php.ini ile aynı dizine yerleştirdim.

1

Facebook'un dizüstü bilgisayarımda yerel bir uygulamayla çalışmasını sağlamak için benim için işe yarayan adımlar şunlar:

  • goto apps.twitter.com
  • adı, uygulama açıklamasını ve site URL'nizi girin Not: localhost için: 8000, eski çalışmayacağından 127.0.0.1:8000 kullanın
  • TWITTER_REDIRECT_URI uygulamanızda tanımlanan geri arama URL'nizle eşleşen geri arama URL'sini girin Not: örneğin: http://127.0.0.1/login/twitter/callback (localhost çalışmayacaktır).
  • Önemli Kullanıcının e-posta adresini talep etmek istiyorsanız hem "gizlilik politikası" hem de "kullanım koşulları" URL'lerini girin
  • şartları kabul et onay kutusunu işaretleyin
  • [Twitter Uygulamanızı Oluşturun] 'a tıklayın
  • üstteki [Anahtarlar ve Erişim Belirteçleri] sekmesine geçin
  • "Tüketici Anahtarını (API Anahtarı)" ve "Tüketici Sırrını (API Sırrı)" uygulamanızdaki TWITTER_KEY ve TWITTER_SECRET'e kopyalayın
  • "İzinler" sekmesini tıklayın ve "salt okunur", "okuma ve yazma" veya "okuma, yazma ve doğrudan mesajlaşma" olarak uygun şekilde ayarlayın (uygulamanız için gereken en az müdahaleci seçeneği kullanın, sadece ve OAuth girişi için "salt okunur" yeterli
  • Kullanıcının e-posta adresinin OAuth giriş verilerine döndürülmesini istiyorsanız, "Ek İzinler" altında "Kullanıcılardan e-posta adresi iste" onay kutusunu işaretleyin (çoğu durumda evet'i işaretleyin)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.