Как создать экземпляр UserCredential, если у меня уже есть значение токена доступа?
Итак, у меня есть этот код
У меня вопрос, как мне настроить UserCredential, если я уже аутентифицирован через OAuth?
В текущем сценарии код будет отображать другую страницу входа, перенаправляя на Google. Поскольку я уже прошел аутентификацию через OAuth с использованием asp.net MVC, и у меня уже есть токен, как мне избавиться от 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>();
Я просто новичок в такого рода вещах.
1 ответ
Предполагая, что у вас уже есть токены, вы можете сделать следующее
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);
Затем вы можете передать свои учетные данные инициализатору сервиса
Ссылка на клиентские библиотеки Google API> .NET > OAuth 2.0
Мы можем создать GoogleCredential
непосредственно из токена доступа и использовать его вместо UserCredential
также. Я просто думаю, что это может быть кому-то полезно. Вот фрагмент кодаGmailService
инициализация:
GoogleCredential cred = GoogleCredential.FromAccessToken(accessToken);
GmailService service = new GmailService(new BaseClientService.Initializer {HttpClientInitializer = cred});