4

Итак, у меня есть этот код
Мой вопрос: как настроить UserCredential, если я уже прошел аутентификацию через OAuth?Как создать экземпляр UserCredential, если у меня уже есть значение Access Token?

Текущий сценарий - это код, отображающий другую страницу входа в систему, перенаправляемую в 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>(); 

Я просто новичок в таких вещах.

ответ

8

Предполагая, что у вас уже есть маркеры, вы можете сделать следующее

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); 

Затем вы можете передать свои полномочия на инициализаторе сервиса

Reference Google API Client Libraries > .NET > OAuth 2.0

+0

Просто следить за вопрос @Nkosi том, как установить токен обновления в UserCredential? credential.Token.RefreshToken = "[your_access_token_here]", это правильный путь? Потому что я продолжал получать «токен доступа истек, но мы не можем его обновить». –

+0

@PrinceJea. проверьте обновление – Nkosi

+0

@PrinceJea. Вы добавляете токен обновления при создании «TokenResponse». GoogleAuthorizationCodeFlow получит новый токен доступа на основе токенов обновления и клиентских секретов. – Nkosi

 Смежные вопросы

  • Нет связанных вопросов^_^