2011-03-16 61 views
2

嘗試使用StartSignInWithTwitter方法。在拋出異常後立即調用該方法。這是使用最新版本的DotNetOpenAuth。這與我在本地開發和運行有什麼關係? (VS2010)這是我應該如何進行身份驗證的第一個地方?我在源代碼中包含的Samples包中看到了一些不同的方法。DotNetOpenAuth Twitter消費開始登錄

{「遠程服務器返回錯誤:(401)未經授權。」}

我的代碼看起來像下面:

public void TwitAuthInit() 
    { 
     TwitterConsumer.StartSignInWithTwitter(false).Send(); 
    } 

    public ActionResult TwitAuth() 
    { 
     if (TwitterConsumer.IsTwitterConsumerConfigured) 
     { 
      string screenName; 
      int userId; 
      if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId)) 
      { 

       FormsAuthentication.SetAuthCookie(screenName, false); 
       return RedirectToAction("Home", "Index"); 
      } 

     } 

     return View(); 
    } 
+0

你可以添加到你的問題是否分佈式的Twitter樣本適合你? –

+0

我無法使它與示例分發一起工作。同樣的確切錯誤。它可能是Twitters上的一些事物嗎?我沒有註冊申請。在Twitter上配置的任何URL都必須與我的本地地址匹配嗎?這可能是我通過使用Visual Studio通過本地主機運行的問題。 – aherrick

+2

然後,您的Twitter用戶最有可能出現註冊問題。請務必在註冊頁面中選擇應用程序類型=瀏覽器。實際上,根據我的經驗,URL並不重要。 –

回答

1

要回答你關於「問題是我應該怎麼做認證在第一位?「:

你可能不應該呼籲SetAuthCookie(screenName, false)與你的screenName,因爲屏幕名稱(我相信)可以回收。您應該使用唯一的ID登錄用戶,您可以在您自己的用戶數據庫或Twitter中創建一個ID,然後僅將該屏幕名稱用作向用戶顯示的別名(也可能是其他用戶,如果此用戶是張貼一些東西供公衆觀看)。否則,當Twitter回收用戶名時,該用戶將繼承您網站上的舊用戶的所有數據 - 這並不好。

+0

安德魯 - 感謝您的評論,好的名字太安德魯在這裏以及。哈哈。但是,我確實知道screenName。我的意思是更多的適當的代碼來調用/接受來自Twitter的回覆。我已經看到了我的發佈方式,也見過使用TokenManager。你有什麼建議? – aherrick

+0

總是有TokenManager參與,所以我不確定「你的方式」與「使用TokenManager」有什麼不同。 –

1

想要確認401錯誤確實是通過在twitter應用程序配置頁面上設置非空回調URL解決的。

從設置頁面的應用程序類型的塊:

To restrict your application from using callbacks, leave this field blank.

1

你必須進入TwitterConsumer.cs並更改以下網址:

Request token URL https://api.twitter.com/oauth/request_token 
Authorize URL https://api.twitter.com/oauth/authorize 
Access token URL https://api.twitter.com/oauth/access_token 

由於Twitter改變了自己的網址。我沒有得到備忘錄,並花費太多時間來調試。