2015-12-02 16 views
6

dies dieser Code snniped:GmailService erstellen Watch() erhalten Benutzer nicht autorisierte Fehler

credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets,//read from client secret.json file 
       Scopes, 
       "user", 
       CancellationToken.None).Result; 

    // Create Gmail API service. 
    var service = new GmailService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = credential, 
     ApplicationName = ApplicationName, 
    }); 

    UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me"); 
    WatchRequest body = new WatchRequest() 
     { 
      TopicName = "projects/push-notifications-ver3/topics/mytopic", 
      LabelIds = new[] {"INBOX"} 
    string userId = "me"; 
    UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId); 
    WatchResponse test = watchRequest.Execute(); 

Erste Fehler: Fehler Cloud PubSub Projekte Senden Testnachricht/Push-Benachrichtigungen-ver3/Themen/MyTopic: User nicht berechtigt, diese Aktion durchzuführen. [403]

Thema wurde mit Abonnement erstellt, die Berechtigung wurde dem aktuellen Benutzer als Besitzer des Themas gegeben Jeder Vorschlag, warum Benutzer nicht autorisiert?

+0

Stellen Sie sicher, dass Sie auch ["Gewähren von Veröffentlichungsrechten für Ihr Thema"] (https://developers.google.com/gmail/api/guides/push#grant_publish_rights_on_your_topic) erteilen. Ich habe diesen Schritt nicht ausgeführt und es kommt zu Autorisierungsfehlern zwischen dem Back-End-Gmail-Dienst und dem Publisher-Endpunkt. Das Thema erlaubt grundsätzlich nur Veröffentlichungen aus autorisierten Quellen. –

+0

@Dima Hast du das jemals gelöst? Ich habe gerade angefangen, diese Funktion zu nutzen und sehe mir das gleiche Problem an. – jpo

+0

@ Lo-Tan Haben Sie bitte ein funktionierendes Beispiel? Ich bekomme auch diesen Fehler. Ich habe die Eigentumsrechte an meinem Dienstkonto erteilt. – jpo

Antwort

0

Haben Sie den OAuth-Prozess für den angegebenen Benutzer abgeschlossen? Ersetzen Sie das Wort "user" in der Methode AuthorizeAsync() durch Ihren authentifizierten Benutzer? Wenn ja, versuchen Sie es mit der neuen Client-Secrets-Datei und überprüfen Sie auch, ob PubSub Scope im Variablenbereich vorhanden ist.

Ich stehe vor einem ähnlichen Problem und es stellte sich heraus, eines dieser Probleme. Könnte auch für dich arbeiten.

+0

Der OAuth-Prozess wurde abgeschlossen, und alle vorherigen Schritte (Thema und Abonnement erstellen) wurden mit diesem Benutzer erstellt. "user" sollte so bleiben wie es in allen Beispielen der Fall ist (aber ich habe ja versucht, es durch einen aktuellen Benutzer zu ersetzen). Geheime Datei wurde ein paar Mal generiert. PubSub vorhanden. – Dima