C# 从Dotnet Google API获取用户电子邮件信息

C# 从Dotnet Google API获取用户电子邮件信息,c#,.net,google-drive-api,gdata,C#,.net,Google Drive Api,Gdata,我正在为gData和Drive C#api开发两个独立的Oauth2实现,分别将令牌信息存储在Oauth2参数和AuthorizationState中。我能够刷新令牌并将其用于必要的API调用。我正在寻找一种方法来使用它来获取用户的信息,主要是电子邮件地址或域名 我试着跟随演示,但是我得到了一个类似于Rapsaland的问题的编译错误,我说 can't convert from 'Google.Apis.Authentication.OAuth2.OAuth2Authenticator<

我正在为gData和Drive C#api开发两个独立的Oauth2实现,分别将令牌信息存储在Oauth2参数和AuthorizationState中。我能够刷新令牌并将其用于必要的API调用。我正在寻找一种方法来使用它来获取用户的信息,主要是电子邮件地址或域名

我试着跟随演示,但是我得到了一个类似于Rapsaland的问题的编译错误,我说

can't convert from
'Google.Apis.Authentication.OAuth2.OAuth2Authenticator<
Google.Apis.Authenticatio‌​n.OAuth2.DotNetOpenAuth.NativeApplicationClient>'
to 'Google.Apis.Services.BaseClientService.Initializer'.
无法从转换
'Google.api.Authentication.OAuth2.OAuth2Authenticator<
Google.api.Authenticatio‌​n、 OAuth2.DotNetOpenAuth.NativeApplicationClient>'
到“Google.api.Services.BaseClientService.Initializer”。
我只是抓取了最新版本的,所以我不认为这就是它

我看到的所有其他人都提到使用UserInfo API,但我找不到任何类型的C#/dotnet API,我可以使用它而不需要直接执行GET/POST请求


有没有一种方法可以使用我在其中一个C#API中已有的令牌来获取此信息,而无需发出新的HTTP请求?

您需要使用
Oauth2Service
来检索有关用户的信息

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

Oauth2Service
可从以下库中获得:

用于@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();
                }

谢谢对于那些有我的问题的人,我仍然面临如何制作凭据的问题,但我能够从上面的示例中借用一些成员:
GetAuthenticatorFromState
StoredStateClient
。在此基础上,我创建了一个新的
Google.api.Services.BaseClientService.Initializer
,将其
Authenticator
字段设置为
GetAuthenticatorFromState(MyStoredAuthState)
,然后将初始化器传递给服务构造函数。非常简单,谢谢@user990635我正在完全更新我的代码,以使用新的,不贬值的代码,所以现在事情有点混乱,但如果我不记得回来给你一个链接,提醒我一周左右,我就快完成了。