2017-02-08 11 views
0

サービスアカウントを使用してGoogleカレンダーAPIにアクセスしようとしているアプリケーションを構築しました。私たちは自分でアプリケーションを管理していますが、アクセスしようとしているカレンダーは別のGSuiteアカウントにあります。私たちは、GSuiteの管理者にステップhereを実行させ、クライアントIDと認証範囲 "https://www.googleapis.com/auth/calendar.readonly"に基づいてGoogleのアプリにアクセスできるようにしました。Google Calendar APIサービスアカウントを使用したFreeBusyアクセス

サービスアカウントを使用してユーザーのカレンダーデータにアクセスしようとすると、正しく要求をフォーマットする方法がわかりません。具体的には、「サブ」パラメータが含まれていない場合は、トークンが付与されているという意味で要求が機能し、その後のカレンダーへのアクセス要求に進むことができます。ただし、その後のリクエストでは、ユーザーカレンダーにエラーが返されていないため、アクセス権がありません。下記の要求である:私はGSuiteから特定の電子メール/ユーザ名が含まれている場合、その後、私は全くのトークンを要求することはできませんよ「偽装」するアカウントが

String jwtClaimset = '{'+ 
          '"iss":"[email protected]ervice-account.com",'+ 
          '"sub":"[email protected]",'+ 
          '"scope":"https://www.googleapis.com/auth/calendar.readonly",'+ 
          '"aud":"https://www.googleapis.com/oauth2/v4/token",'+ 
          '"exp":'+expTime+','+ 
          '"iat":'+requestTime+ 
          '}'; 

、私は以下を提示していますエラー:そのエラーが提示されている理由

"error_description": "Client is unauthorized to retrieve access tokens using this method."

だから私の質問は、私はGSuiteにしている場合、ユーザーのカレンダーのいずれかにアクセスするためのサブパラメータが必要なのですので、あなたは知っていますか?

答えて

2

そして、何が起こったのか分かりません。ちょうどGSuiteのアクセス許可/アクセスの更新に時間がかかるかもしれませんが、今はこれが機能しています。

注意してください、私たちは、私たちが必要と思ったように、それを使用して、サブパラメータとその作業を使用しています。

+0

こんにちはジョージ。私はNodeJsにいくつかのAPIを書いて、ユーザーのイベントをリストし、カレンダーにイベントを作成することを試みています。私たちの組織のメールアカウントとカレンダーはgsuiteにあります。 JWTベースの認証でnodejsのgoogleapisパッケージを試しましたが、プライマリユーザーのイベントは表示されません。サービスアカウントの資格情報が他のユーザーアカウントをどのように偽装するかについては不明です。これを達成するためのプロセスを案内してくれますか? –

関連する問題