如果我已经拥有 Access Token 的值,如何创建 UserCredential 的实例?
How to create a instance of UserCredential if I already have the value of Access Token?
所以我有这个代码
我的问题是,如果我已经通过 OAuth 进行了身份验证,我该如何配置 UserCredential?
当前情况是代码将显示另一个登录页面并重定向到 google。由于我已经使用 asp.net MVC 通过 OAuth 进行了身份验证并且我已经拥有令牌如何摆脱 GoogleWebAuthorizationBroker 并直接传递令牌?
string[] scopes = new string[] {PlusService.Scope.PlusLogin,
PlusService.Scope.UserinfoEmail,
PlusService.Scope.UserinfoProfile};
UserCredential credential =
GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
{
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxxx"
},
scopes,
Environment.UserName,
CancellationToken.None,
new FileDataStore("Store")).Result;
PlusService service = new PlusService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "ArcaneChatV2",
});
PeopleResource.ListRequest listPeople = service.People.List("me", PeopleResource.ListRequest.CollectionEnum.Visible);
listPeople.MaxResults = 10;
PeopleFeed peopleFeed = listPeople.Execute();
var people = new List<Person>();
我刚接触这种东西。
假设您已经拥有令牌,您可以执行以下操作
string[] scopes = new string[] {
PlusService.Scope.PlusLogin,
PlusService.Scope.UserinfoEmail,
PlusService.Scope.UserinfoProfile
};
var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxxx"
},
Scopes = scopes,
DataStore = new FileDataStore("Store")
});
var token = new TokenResponse {
AccessToken = "[your_access_token_here]",
RefreshToken = "[your_refresh_token_here]"
};
var credential = new UserCredential(flow, Environment.UserName, token);
然后您可以将凭据传递给服务的初始化程序
我们可以直接从访问令牌创建 GoogleCredential
并使用它来代替 UserCredential
。我只是认为这可能对某人有帮助。这是 GmailService
初始化的代码片段:
GoogleCredential cred = GoogleCredential.FromAccessToken(accessToken);
GmailService service = new GmailService(new BaseClientService.Initializer {HttpClientInitializer = cred});
所以我有这个代码
我的问题是,如果我已经通过 OAuth 进行了身份验证,我该如何配置 UserCredential?
当前情况是代码将显示另一个登录页面并重定向到 google。由于我已经使用 asp.net MVC 通过 OAuth 进行了身份验证并且我已经拥有令牌如何摆脱 GoogleWebAuthorizationBroker 并直接传递令牌?
string[] scopes = new string[] {PlusService.Scope.PlusLogin,
PlusService.Scope.UserinfoEmail,
PlusService.Scope.UserinfoProfile};
UserCredential credential =
GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
{
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxxx"
},
scopes,
Environment.UserName,
CancellationToken.None,
new FileDataStore("Store")).Result;
PlusService service = new PlusService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "ArcaneChatV2",
});
PeopleResource.ListRequest listPeople = service.People.List("me", PeopleResource.ListRequest.CollectionEnum.Visible);
listPeople.MaxResults = 10;
PeopleFeed peopleFeed = listPeople.Execute();
var people = new List<Person>();
我刚接触这种东西。
假设您已经拥有令牌,您可以执行以下操作
string[] scopes = new string[] {
PlusService.Scope.PlusLogin,
PlusService.Scope.UserinfoEmail,
PlusService.Scope.UserinfoProfile
};
var flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxxx"
},
Scopes = scopes,
DataStore = new FileDataStore("Store")
});
var token = new TokenResponse {
AccessToken = "[your_access_token_here]",
RefreshToken = "[your_refresh_token_here]"
};
var credential = new UserCredential(flow, Environment.UserName, token);
然后您可以将凭据传递给服务的初始化程序
我们可以直接从访问令牌创建 GoogleCredential
并使用它来代替 UserCredential
。我只是认为这可能对某人有帮助。这是 GmailService
初始化的代码片段:
GoogleCredential cred = GoogleCredential.FromAccessToken(accessToken);
GmailService service = new GmailService(new BaseClientService.Initializer {HttpClientInitializer = cred});