2015-12-02 23 views
6

questo il codice snniped:GmailService creare Watch() ottenendo l'utente non autorizzato

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

ottenendo l'errore: Errore durante l'invio messaggio di prova per progetti cloud PubSub/push-notifiche-ver3/argomenti/MyTopic: non uso autorizzato a eseguire questa azione. [403]

L'argomento è stato creato con l'abbonamento, il permesso è stato assegnato all'utente corrente come proprietario dell'argomento Qualche suggerimento perché utente non autorizzato?

+0

Assicurati anche di ["Concedi i diritti di pubblicazione sul tuo argomento"] (https://developers.google.com/gmail/api/guides/push#grant_publish_rights_on_your_topic). Non ho eseguito questo passaggio e si verificano errori di autorizzazione tra il servizio di back-end di Gmail e l'endpoint del publisher. In sostanza, l'argomento consente solo alle pubblicazioni di provenire da fonti autorizzate. –

+0

@Dima Hai mai risolto questo problema? Ho appena iniziato a utilizzare questa funzione e sto affrontando lo stesso problema. – jpo

+0

@ Lo-Tan Per favore, hai un esempio di lavoro? Sto ottenendo anche questo errore. Ho dato il permesso di proprietà al mio account di servizio. – jpo

risposta

0

Hai completato il processo OAuth per l'utente specificato? Inoltre, stai sostituendo la parola "utente" nel metodo AuthorizeAsync() con il tuo utente autenticato? Se sì, prova a farlo con il nuovo file dei client e controlla anche se PubSub Scope è presente nello scope della variabile.

Affronto un problema simile e si è rivelato essere uno di questi problemi. Potrebbe funzionare anche per te.

+0

Il processo OAuth è stato completato e tutti i passaggi precedenti (creare argomenti e iscrizioni) creati con questo utente. "utente" dovrebbe rimanere come è secondo tutti gli esempi (ma sì, ho provato a sostituirlo con un utente corrente). Secret File è stato generato un paio di volte. PubSub presente. – Dima