2012-01-26 68 views
1

我目前正在爲Google plus開發應用程序。我想從Google plus API獲取訪問令牌。我想使用OAuth 2.0來獲取訪問令牌。我已經建造到URL獲取Google Plus API的OAuth訪問令牌

「https://accounts.google.com/o/oauth2/auth?client_id=752264386186- 72f3ef2ok1j3k8g12h7hg8k5kjt9s9si.apps.googleusercontent.com &範圍= HTTPS: //www.googleapis。 COM/AUTH/plus.me & REDIRECT_URI =甕:IETF:WG:OAuth的:2.0:OOB & RESPONSE_TYPE =代碼」

,當我粘貼到由瀏覽器請求與我的谷歌帳戶登錄。所以當我輸入我的憑證時,它會要求「允許訪問」或「不,謝謝」。當我點擊「允許訪問」時,它會在我的瀏覽器中爲我提供訪問令牌。我想要使​​用我的C#代碼完成上述步驟。

如何從代碼導航到授權頁面並在驗證成功後獲取訪問令牌。我應該使用httpwebrequest還是webclient或休息一下。請提供一些示例代碼。

+1

網絡上有OAuth 2.0 SDK,您會發現問題是,它們的設計目的是允許用戶確認事務。避免那部分你不會有太多的運氣。 –

+0

我可以參考的任何鏈接或示例代碼? – Mugu

+0

將其顯示在嵌入式WebBrowser控件中作爲其打算使用的位置,聆聽Navigating事件並查找令牌 –

回答

1

如果使用WebBrowser對你來說沒什麼問題,下面是一個簡單的例子,說明我如何用Foursquare API做同樣的事情。此代碼已被只寫了測試是怎麼回事,所以我敢肯定它缺少一些重要的事情的錯誤處理等

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     string address = 
      "https://foursquare.com/oauth2/authenticate" + 
      "?client_id=" + CLIENT_ID + 
      "&response_type=token" + 
      "&redirect_uri=" + CALLBACK_URI; 
     webBrowser1.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(webBrowser1_Navigated); 
     webBrowser1.Navigate(new Uri(address, UriKind.Absolute)); 
    } 

    void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) 
    { 
     response = e.Uri.ToString(); 
     System.Diagnostics.Debug.WriteLine(e.Uri.ToString()); 
     if (response.LastIndexOf("access_token=") != -1) 
     { 
      string token = response.Substring(response.LastIndexOf("#access_token=") + "#access_token=".Length); 
      System.Diagnostics.Debug.WriteLine("TOKEN: " + token); 
     } 
    } 

一旦允許訪問,你最終得到的回調URI用的access_token 。請注意,webBrowser1_Navigated可能會被調用幾次(每次您在導航到嵌入式Web瀏覽器中的其他頁面時)。

+0

對不起,我有一個問題是什麼是「響應」類型。當我聲明響應是HttpWebResponse類型時,它拋出一個錯誤。 – Mugu

+0

正常工作沒有任何問題 – Mugu

+0

這是從e.Uri.ToString()獲得的字符串。雖然可能會更好地使用e.Uri.AbsoluteUri。 –

0

此代碼是EPIC,字面上驚人。

+2

請把你的意見放在評論區,而不是在答案.. !! :) – balanv