我可能在这里遗漏了一些非常明显的东西,所以这就是为什么我要问我的问题……希望有人能看到我遗漏的东西。上周我刚刚第一次了解了 OAuth,我正在尝试使用它(在这种情况下)在某人登录并授权后从他们那里提取联系人列表。
这是我首先尝试的,使用 Google .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 Bad Request。
然后我尝试了 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
这行得通,我能够取回声称的标识符。我不知道的问题是我完全不知道我应该用它做什么,而且我在任何地方都找不到任何我可以遵循的东西,或多或少地自己做。
理想情况下,我正在寻找的是一个不一定完整的代码示例,但至少足够连贯,我可以到达我想去的地方。如果做不到这一点,一个比正常水平低三个阴影的解释就足够了。
谢谢。