3

私は、gData と Drive C# API の両方に対して Oauth2 の 2 つの個別の実装を行っており、それぞれ OAuth2Parameters と AuthorizationState にトークン情報を格納しています。トークンを更新して、必要な API 呼び出しに使用できます。これを使用してユーザーの情報、主に電子メールアドレスまたはドメインを取得する方法を探しています。

Retrieve OAuth 2.0 Credentialsのデモに従ってみましたが、rapsalands' issue hereと同様のコンパイル エラーが発生しています。

can't convert from
'Google.Apis.Authentication.OAuth2.OAuth2Authenticator<
Google.Apis.Authenticatio‌​n.OAuth2.DotNetOpenAuth.NativeApplicationClient>'
to 'Google.Apis.Services.BaseClientService.Initializer'.

Oauth2 api dllの最新バージョンを入手したので、それだけではないと思います。

私が目にしている他のすべてのコード サンプルは、UserInfo API の使用について言及していますが、単純な GET/POST 要求を実行せずに使用できる C#/dotnet API を見つけることができません。

新しい HTTP 要求を作成せずに、C# API の 1 つで既に持っているトークンを使用してこの情報を取得する方法はありますか?

4

2 に答える 2

8

Oauth2Serviceユーザーに関する情報を取得するには、 を使用する必要があります。

Oauth2Service userInfoService = new Oauth2Service(credentials);
Userinfo userInfo = userInfoService.Userinfo.Get().Fetch();

Oauth2Service次のライブラリで利用できます: https://code.google.com/p/google-api-dotnet-client/wiki/APIs#Google_OAuth2_API

于 2013-04-23T11:28:09.473 に答える
2

上記の@ user990635の質問について。質問は少し古いですが、以下は誰かを助けるかもしれません. コードは Google.Api.Auth.OAuth2 バージョンを使用します

  var credentials =
                    await GoogleWebAuthorizationBroker.AuthorizeAsync(
                            new ClientSecrets {ClientId = clientID, ClientSecret = clientSecret},
                            new[] {"openid", "email"}, "user", CancellationToken.None);
                if (credentials != null)
                {
                    var oauthSerivce =
                        new Oauth2Service(new BaseClientService.Initializer {HttpClientInitializer = credentials});
                    UserInfo = await oauthSerivce.Userinfo.Get().ExecuteAsync();
                }
于 2016-12-28T10:41:21.740 に答える