2012-04-17 69 views
0

我可能在這裏丟失了一些令人難以置信的明顯東西,所以這就是爲什麼我問我的問題......希望有人能看到我我錯過了。上週我剛剛第一次瞭解到OAuth,我試圖用它(在這種情況下)在他人登錄並授權後從其中提取聯繫人列表。Google + OAuth和/或DotNetOpenAuth獲取聯繫人列表 - VB.net

這是我第一次嘗試使用谷歌.NET庫:

 Sub InviteGmailContactsOld() 

    Call google_api.GetClientCredentials(Vars.Server_name) 
    Dim Input_URL As String = google_api.Token_Request_URL & "?scope=" & OverrideEncode("https://www.google.com/m8/feeds/") & "&oauth_callback=" & OverrideEncode(Vars.Site_Root & "my-profile/manage-connections/invite-connections/google/") 
    Dim Input_URI As New Uri(Input_URL) 
    Dim Authenticator As OAuth3LeggedAuthenticator = New OAuth3LeggedAuthenticator("Politistream API", google_api.Client_ID, google_api.Client_Secret, String.Empty, String.Empty) 
    Dim Auth_Request As WebRequest = Authenticator.CreateHttpWebRequest("GET", Input_URI) 
    Dim Final_Request As WebRequest = WebRequest.Create(Input_URI) 
    Dim Auth_Headers As String = Auth_Request.Headers.ToString() 
    Final_Request.Headers.Add(Auth_Headers) 
    Final_Request.Method = "GET" 
    Response.Write(Final_Request.Headers.ToString() & " <br />" & Final_Request.RequestUri.ToString & "<br />") 
    Dim Auth_Response As String = Common.WebRequestToStringResponse(Final_Request) 

End Sub 

在幾個變化試過這一點,無論我做什麼,我的一切從谷歌後面是400錯誤的請求。

然後我試圖DotNetOpenAuth:

 Sub InviteGmailContacts() 
    ' GMail uses openID because OAuth doesn't work properly. 

    Dim openId As New OpenIdRelyingParty 
    Call google_api.GetClientCredentials(Vars.Server_name) 
    Dim New_URL As UriBuilder = New UriBuilder(Request.Url.ToString) 
    Dim Auth_Request As IAuthenticationRequest = openId.CreateRequest(google_api.OpenID_Login_URL, New_URL.Uri, New_URL.Uri) 
    Auth_Request.RedirectToProvider() 

End Sub 

這工作,我能得到所要求的標識回來。我沒有的問題是,我完全不知道我應該怎麼處理它,而且我無法找到任何我可以跟隨的東西,或多或少地製造我自己的東西。

理想情況下,我正在尋找的是一個代碼示例,它不一定是完整的,但至少足夠連貫以至於我可以得到我想要去的地方。如果不這樣做,那麼從正常水平下降三個陰影的解釋就足夠了。

謝謝。

回答

2

您在第一個代碼段中使用的OAuth與Google一起使用,您的第二個代碼段中存在OpenID。正如你注意到的那樣,OpenID爲你提供了一個「聲明的標識符」,它不利於下載聯繫人 - 這對於稍後回來時識別用戶很有用。 OpenID用於認證而OAuth用於授權

由於您要訪問Google通訊錄,這是授權方案,因此您需要OAuth。 DotNetOpenAuth也提供OAuth,並且實際上有一個下載聯繫人的示例(儘管在C#中)。

Download dotnetopenauth並查看OAuthConsumerWpf示例。它有一個標籤,演示下載Google通訊錄。它使用DotNetOpenAuth.ApplicationBlock示例中的代碼(名爲GoogleConsumer的類),希望能夠激發您在應用中執行的操作。

+0

OAuthConsumerWpf就是一個很好的例子。但我不知道爲什麼驗證碼無法回撥。用戶必須手動輸入驗證碼並單擊完成按鈕。是否用於確認目的?有沒有辦法將驗證碼自動發佈回WPF表單。 – Don 2013-09-08 16:57:07

+0

我注意到OAuthConsumerWpf是一個OAuth2項目。這是否意味着可以從提供商處回傳驗證碼? – Don 2013-09-08 19:55:21

相關問題