2017-12-21 5 views
0

Ich habe angefangen, die GMail API zu verwenden, und es funktioniert gut auf meinem lokalen Computer; Es wird die Google-Berechtigungsseite geöffnet und ich kann mein Konto auswählen. Es speichert dann das Rückgabe-JSON-Token und fragt nur noch einmal, ob dieses Token entfernt wurde.GMail OAUTH nicht um Erlaubnis gefragt, wenn veröffentlicht

Wenn ich auf dem Server veröffentliche, wird die OAUTH-Seite nie angezeigt, und die Anwendung scheint eine Zeitüberschreitung mit der Ausnahme "Thread wurde abgebrochen" zu erhalten.

Mein Code;

try 
    { 
     using (var stream = new FileStream(HttpContext.Current.Server.MapPath("~/credentials/client_id.json"), FileMode.Open, FileAccess.Read)) 
     { 
      string credPath = HttpContext.Current.Server.MapPath("~/credentials/gmail_readonly_token.json"); 

      _credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       Scopes, 
       "user", 
       CancellationToken.None, 
       new FileDataStore(credPath, true)).Result; 
      db.writeLog("INFO", "Gmail Credentials Saved","Credential file saved to: " + credPath); 

     } 
     // Create Gmail API service. 
     service = new GmailService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = _credential, 
     }); 
    } 
    catch (Exception e) 
    { 
     db.writeLog("Error", "Failure when creating Gmail class", e.Message, null, _username, null); 
    } 

Gibt es etwas, was ich in der 'client_id.json' ändern müssen (formal client_secret.json) Datei? Das einzige, was ich verändert habe, ist die redirect_uris-Linie.

Alle anderen Vorschläge wären willkommen, die einzige andere Frage, die ich finden konnte, ist ähnlich here, aber es gibt keine Antwort.

Danke,

Danny.

Antwort

0

Die erste funktionierte, weil Sie den beabsichtigten Anwendungsfall, der clientseitig ist, befolgt haben. Befolgen Sie jedoch die Anleitung Implementing Server-Side AUthorization, um die Autorisierung auf dem Server zu implementieren.

+0

Entschuldigung für die langsame Antwort! Ich versuche es, den Unterschied zwischen einer in IIS Express ausgeführten Webanwendung und einer in IIS auf dem Server ausgeführten Webanwendung zu erkennen, insbesondere, wenn der Serveranwendungspool so eingerichtet wurde, dass er wie ich ausgeführt wird. Prost! – RexNoctis

Verwandte Themen