2010-05-30 115 views
7

我試圖讓我的ASP.NET網站上的Twitter身份驗證工作。在Twitter網站上創建應用程序時,必須指定一個回調URL,爲了說明起見,我已將其設置爲http://mydomain.comTwitter oauth_callback參數被忽略!

我已閱讀oAuth 1.0a規範,並覆蓋此回調URL你自己定製的,你必須在request_token階段發送oauth_callback參數(當然是url編碼)。

所以我的請求的URL看起來像這樣:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

據稱,如果一切按計劃進行,在你的響應數據,你應該得到的oauth_callback_confirmed = true一個新的參數除了你令牌和令牌祕密參數。

然而,我的反應來通過爲: 的oauth_token =設爲MyToken & oauth_token_secret = MYTOKENSECRET

我知道我沒有給你們最走量的,但是我在我無計可施,以爲什麼我沒有收到oauth_callback_confirmed參數。如果沒有這個,我的應用程序會保持默認返回到Twitter網站上硬編碼的回調URL。如果有人能幫助我,我會永遠感激!

感謝, A.

+0

我添加了一個twitterapi標籤。 – amelvin 2010-05-30 22:57:20

回答

0

我用this guide設置我的電腦用作回調位置。基本上,你以某種方式設置你的主機文件,清除你的緩存並添加一些Firefox註冊表值。最後,當您正在調試oauth調用時,重定向會返回到您的本地PC。

正如我所說,它爲我工作。

8

我讀過的OAuth 1.0a的規範,並 覆蓋這個回調網址與你的 自己定製一個你要發送的 request_token階段 oauth_callback參數(URL編碼 當然) 。

所以我的請求的URL看起來像這樣:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

只是因爲你讀的規格並不意味着TWITTER閱讀。 :P

開玩笑 - 這是基本上是正確的 - 但Twitter的方式喜歡收到此數據是有點不同的(而不是有據可查)。

我發現讓oauth_callback確認方法如下:在請求函數的參數指定oauth_callback,而不是URL中。 (使用的oauth2)

Python的例子:

''' Create our client.''' 

client = oauth.Client(consumer) 

''' do the request ''' 

resp, content = client.request(request_token_url,"POST",body=urllib.urlencode({'oauth_callback':callbackURL})) 


''' note that it's called "body" in this particular OAuth function for Client but in OAuth Request object it's called "parameters." YMMV depending on programming language/ library of course. ''' 

這也是我已經成功地取得OAuth驗證的唯一途徑。據推測,不應該每次都指定回調URL,因爲我們在應用設置中提供了它......但是體驗似乎表明了其他方面。

最後,請注意,在第3階段,您必須再次做同樣的事情 - 這次包括oauth_verifier以及參數中的回調URL。

希望這會有所幫助 - 無法開始告訴你,我花費了多少努力來解決這個問題。

祝你好運!

Ĵ

1
<?php 
    // oauth-php example 
    $token = OAuthRequester::requestRequestToken(
       $consumer_key, 
       $user_id, 
       array('oauth_callback'=> urlencode($callback_uri)) 
      ); 
?>