0

私はおそらくここで信じられないほど明白な何かを見逃しているので、私が質問をしている理由です...誰かが私が見逃しているものを見ることができることを願っています. 先週初めて 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

これをいくつかのバリエーションで試してみましたが、何をしても、Google から返されたのは 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

これは機能し、要求された識別子を取り戻すことができました。私が持っていない問題は、私がそれをどうするべきか全くわからないということです.そして、私が従うことができ、多かれ少なかれ自分のものを作ることができる場所がどこにも見つかりません.

理想的には、私が探しているのは、必ずしも完全ではないコード サンプルですが、少なくとも目的の場所に到達できるほど十分に一貫性があるコード サンプルです。それがなければ、通常より 3 段階レベルを下げた説明で十分です。

ありがとう。

4

1 に答える 1

2

Google の最初のコード スニペットで使用する OAuth と、2 番目のスニペットにある OpenID を混同しています。お気づきのように、OpenID は連絡先をダウンロードするのには適していない "要求された識別子" を提供します。ユーザーが後で戻ってきたときにユーザーを認識するのに適しています。OpenID は認証用ですが、OAuth は認可用です。

Google コンタクトにアクセスしたいので、これは承認シナリオであり、OAuth が必要です。DotNetOpenAuth も OAuth を実行し、実際に連絡先をダウンロードするためのサンプルがあります (C# ではありますが)。

dotnetopenauth をダウンロードして、OAuthConsumerWpf サンプルを確認してください。Google コンタクトのダウンロードを示すタブがあります。DotNetOpenAuth.ApplicationBlock サンプル ( と呼ばれるクラスGoogleConsumer) のコードを使用しており、アプリで何ができるかについてのヒントになることを願っています。

于 2012-04-21T22:00:45.787 に答える