4

So habe ich diesen Code
Meine Frage ist, wie konfiguriere ich die UserCredential, wenn ich bereits über OAuth authentifiziert bin?Wie erstelle ich eine Instanz von UserCredential, wenn ich bereits den Wert von Access Token habe?

Das aktuelle Szenario ist der Code wird eine andere Login-Seite auf Google umleiten anzuzeigen. Da ich bereits authentifiziert über OAuth mit asp.net MVC und ich habe bereits das Token, wie ich die GoogleWebAuthorizationBroker loswerden und direkt das Token übergeben?

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

Ich bin gerade neu in dieser Art von Sachen.

Antwort

8

Angenommen, Sie haben bereits die Token können Sie wie folgt vorgehen

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

Dann Sie Ihre Anmeldeinformationen zu dem Service des initializer

Referenz Google API Client Libraries > .NET > OAuth 2.0

+0

Nur eine Follow-up-Frage @Nkosi wie passieren kann Legen Sie das Aktualisierungstoken in UserCredential fest? credential.Token.RefreshToken = "[your_access_token_here]" ist das der richtige Weg? Weil ich immer "Das Zugriffs-Token ist abgelaufen, aber wir können es nicht aktualisieren" erhalten. –

+0

@PrinceJea. Überprüfen Sie das Update – Nkosi

+0

@PrinceJea. Sie fügen das Aktualisierungstoken beim Erstellen der TokenResponse hinzu. GoogleAuthorizationCodeFlow erhält ein neues Zugriffstoken basierend auf Ihrem Refresh-Token und den Client-Secrets. – Nkosi