2016-09-14 5 views
1

GoogleアナリティクスレポートAPIを使用してダッシュボードを構築して、私の会社のクライアント用のレポートを作成しようとしています。Analytics API:自動認証

問題は、cronジョブを使用してレポートを作成する必要があることですが、これには認証が必要です。私はこの作品を作るために管理

が、のOAuth2プロセスは、Googleのログインページに私をリダイレクトすることでグーグルに認証するために私を強制的に:API for web applications使用

1:私は、次のアプローチを試してみました。ログインすると、トークンが作成され、レポートが生成されます。しかし、私はAPI for service accountsを使用して、ユーザーの介入(すなわち、Googleのログインフォームを記入)

2.なくても自動的に認証する方法を見つけることができませんでした:

このソリューションでは、私はせずにレポートを作成することができています手動でGoogleにログインしてください。素晴らしいです。しかし、この方法では、新しく作成したユーザー[email protected]をアクセスしたいGoogleアナリティクスのビューに追加することで、サービスアカウントをGoogleアナリティクスアカウントに追加する必要があります。私がアクセスしようとしているビューの一部は私の会社のクライアントによって管理されているので、私はそれを行うことはできません。また、それぞれにアナリティクスユーザーを追加するよう依頼することはできません。

すでに設定されているユーザーの電子メールを使用して、アナリティクスビューにアクセスできる必要があります。私はService Accounts Managerのサービスアカウントの所有者としてこのアドレスを追加しようとしましたが、運がありません(以下のスクリーンショットを参照)。

Service Accounts Manager

Analytics Administration

私は(手動グーグルにログインすることなく、すなわち)静的なトークンを使用したWebアプリケーションのためのAPIを使用することができますいずれかの方法はあり、またはなしでサービスアカウント用のAPIを使用しますGoogleアナリティクスの各ビューにGoogle作成のユーザーを追加する必要がありますか?

私はここで紛失しているので、アドバイスが役に立ちます。

答えて

2

サービスアカウントを使用できないと言ったように、すべてのアカウントを制御できないためです。

Oauth2を使用する必要があります。誰かが初めてアプリケーションを認証する必要があります。初めてアクセスが許可されると、APIにアクセスするためのアクセストークンとリフレッシュトークンが与えられます。このリフレッシュトークンを保存すると、レポートを実行するために好きなときにcronジョブから新しいアクセストークンを要求することができます。

このトリックは、各ユーザーアカウントに関連付けられている更新トークンを保存しています。あなたのクライアントはアクセスを許可するためにアプリケーションを認証する必要があります。リフレッシュトークンを格納します。リフレッシュトークンは期限切れにならないようにしてください(いくつかの理由があります)。必要なときにアクセス権を得ることができます。

注:アカウントレベルでサービスアカウントのメールを送信すると、すべてのサービスにアクセスできます。しかし、これはあなたがアクセスできないクライアントであなたを助けません。

更新:

更新トークンは下を除いて期限切れになりません。

  • トークン6ヶ月間使用されていないリフレッシュも期限切れになります。
  • ユーザーは、Googleアカウントのアプリ設定にアクセスしていつでもアクセスを取り消すことができます。

ユーザーは26回の異なるリフレッシュトークンを26回与えて、26回目に最初のリフレッシュトークンの有効期限が切れると、アプリケーション(同じクライアントID)を再認証できます。 1人のユーザーには、26のリフレッシュ・トークンしか持てません。必ず最新のリフレッシュトークンを保存してください。

+0

私はそれを調べるでしょう、ありがとう。私は1つの質問を持っていますが、リフレッシュトークンはそれぞれのアナリティクスプロパティに固有です(つまり、20種類のサイトの統計情報を取得する場合は、20種類のリフレッシュトークンを作成する必要があります) OAuth2を使用してAPIを承認するために使用する電子メールとパスワードを意味します)。 – roberto06

+0

更新トークンを使用すると、認証済みのユーザーがアクセスしているすべてのGoogleアナリティクスアカウントにアクセスできます。 – DaImTo

+1

素晴らしい!私は数日後にそれを試してみて、それがどのように行ったかを教えてください! – roberto06

0

私が知る限り、意図したcronジョブの方法は、説明したようにサービスアカウントにAPIを使用することです。しかし、ビューの所有者からの事前の承認なしに、IDをサービスアカウントに指定するだけでランダムなビューにアクセスすることはできません。この設定を行わないと、アナリティクスはクライアントとの関係を認識しないため、データへのアクセスを拒否します。

サポートされているかどうかはわかりませんが、接続しているすべてのビューにこの設定が継承されるように、サービスアカウントをプロパティまたはアナリティクスのアカウントレベルで追加できます。

+0

同じ問題ですが、私は200を超えるアナリティクスアカウントを持っています(主に一部のユーザーのみに読み取り権限があるため)、それぞれにユーザーを追加することはできません。 – roberto06