2015-12-02 18 views
6

は、このこのコードはsnniped:GmailServiceウォッチ()取得ユーザーを作成して許可されていないエラー

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

エラー行き方:ユーザーません:/プッシュ通知-VER3 /トピック/ mytopicクラウドPubSubのプロジェクトにテストメッセージを送信 エラーこの行動を実行する権限を持つ。 [403]

トピックはサブスクリプションで作成されました。トピックの所有者として現在のユーザーに許可が与えられました ユーザーが許可していない理由を教えてください。

+0

[トピックに公開権を与える]](https://developers.google.com/gmail/api/guides/push#grant_publish_rights_on_your_topic)も必ず確認してください。私はこの手順を踏んでいないので、バックエンドのgmailサービスとパブリッシャのエンドポイントの間で認証エラーが発生します。このトピックでは、基本的には公表されたソースからの公開のみが許可されています。 –

+0

@Dimaあなたはこれを解決しましたか?私はこの機能を使い始めたばかりで、同じ問題に直面しています。 – jpo

+0

@ Lo-Tan実用的な例がありますか?私もこのエラーが発生しています。私は自分のサービスアカウントに所有権を与えました。 – jpo

答えて

0

指定されたユーザーのOAuthプロセスを完了しましたか?また、AuthorizeAsync()メソッドの単語 "user"を認証されたユーザーに置き換えていますか?はいの場合は、新しいクライアントシークレットファイルでそれを実行し、PubSub Scopeが変数スコープに存在するかどうかを確認してください。

私も同様の問題に直面し、これらの問題の1つと判明しました。あなたのためにも働くかもしれません。

+0

OAuthプロセスが完了し、前のすべての手順(トピックとサブスクリプションの作成)がこのユーザーで作成されました。 "user"はすべての例に従ってそのまま残すべきです(しかし、私は現在のユーザーと置き換えようとしました)。シークレットファイルは数回生成されました。 PubSubが存在する。 – Dima

関連する問題