サービスアカウントGoogleアナリティクスOAUTH ACCESSTYPE =オフラインC#
-
28-10-2019 - |
質問
Googleアナリティクスにアクセスできるアカウントの資格情報があります。
Analytics Core Reporting APIを利用したいと考えています http://code.google.com/apis/analytics/docs/gdata/home.html
ユーザー名/パスワードを使用する例を使用する例を見つけましたが、SetUserCredentialssを呼び出しますが、これは安全性が低く/リクエスト制限が低い(最新クライアントには存在しない)コメントを見てきました。
さらに、OAuthを使用している例のようですが、ユーザーのインタラクションとユーザーのGoogleアカウントへのアクセスを付与する必要があります。
ただし、ユーザーの相互作用を必要とせず、事前に定義されたGoogleアカウントに接続するサービスを実行したいと考えています(ユーザーが表示することに関連していません)。
その後、結果をデータベースに保存でき、エンドユーザーはデータベースの結果を照会できます。
最初にログインするときにAccessType =オフラインを使用することに関する情報を見てきました。これにより、アクセストークンとリフレッシュトークンが返されます。http://code.google.com/apis/accounts/docs/oauth2webserver.html#offline
私の例では、エンドユーザーがアプリケーションにログインすることはありません。更新トークンを取得し、config/lookupテーブルに更新トークンを保存する別の管理者アプリケーションを使用できますか?メインアプリケーションは、config/lookupテーブルから引っ張る更新トークンを使用し、アクセストークンを取得してGoogleアナリティクスアカウントを照会できるようにします。
AccessType = offlineを使用し、更新トークンのフェッチを分離し、更新トークンを使用してアクセストークンを取得してGoogle Analyticsアカウントを照会するC#例を探しています。
解決
アプリを作成します https://code.google.com/apis/console/
アプリの場合は、Google Analyticsへのアクセスをオンにし、WebサイトにOAUTH 2.0クライアントIDを作成します。
閲覧:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=YOUR_APP_ID.apps.googleusercontent.com&access_type=offline&scope=https://www.googleapis.com/auth/analytics.readonly&redirect_uri=HTTP://YOUR_CALL_BACK_URL
変わった your_app_id, your_call_back_url 関連する値に。
含めることが重要です Access_Type =オフライン.
Grant Accessを押すと、これはリダイレクトされます HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE
. 。 URLのコードをコピーします。
コードを使用して、CMDプロンプトを使用して更新トークンをリクエストします。
curl -d "code=THIS_IS_YOUR_CODE&client_id=YOUR_APP_ID.apps.googleusercontent.com&client_secret=YOUR_APPS_SECRET_CODE&redirect_uri=HTTP://YOUR_CALL_BACK_URL&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
変わった this_is_your_code, your_app_id, your_apps_secret_code, your_call_back_url 関連する値に。
記録します refresh_token 戻ってきた。
コアレポートv3.0 .netライブラリの最新バージョンをダウンロードhttp://code.google.com/p/google-api-dotnet-client/wiki/downloads
google.apis.analytics.v3.csの現在のバージョンにはバグがあります。このファイルのコードをローカルソリューションに修正する(そしてgoogle.apis.analytics.v3.binを参照しないでください)http://code.google.com/p/google-api-dotnet-client/source/browse/services/google.apis.analytics.v3.cs?repo = samples&name=201123-1.1.1.4344-beta
プロパティの寸法をaから変更します List<system.string>
に string
.
またはあなたは私のようなエラーが発生し、この男はそうしました http://www.evolutiadesign.co.uk/blog/using-the-google-analytics-with-c-shar/
その後、更新トークンを使用して、ユーザーインタラクションなしでアクセストークンを生成し、アクセストークンを使用してGoogleアナリティクスに対してレポートを実行できます。
using System;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using AnalyticsService = Google.Apis.Analytics.v3.AnalyticsService;
class Program
{
public static void Main()
{
var client = new WebServerClient(GoogleAuthenticationServer.Description, "YOUR_APP_ID.apps.googleusercontent.com", "YOUR_APPS_SECRET_CODE");
var auth = new OAuth2Authenticator<WebServerClient>(client, Authenticate);
var asv = new AnalyticsService(auth);
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
request.Dimensions = "ga:pagePath";
request.Sort = "-ga:visitors";
request.MaxResults = 5;
var report = request.Fetch();
Console.ReadLine();
}
private static IAuthorizationState Authenticate(WebServerClient client)
{
IAuthorizationState state = new AuthorizationState(new string[]{}) { RefreshToken = "REFRESH_TOKEN" };
client.RefreshToken(state);
return state;
}
}
他のヒント
イアンとそれは私がオンラインで見つけることができる他のどの答えよりも正しい方向に進むのに役立ちました。ラインのため、AnalyticsServiceオブジェクトで何かが変更されたに違いありません。
var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
私のために働いていなかったので、私は以下を使用する必要がありました。
var request = asv.Data.Ga.Get("ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID", "2012-01-01", "2012-02-20", "ga:visitors");
うまくいけば、これがあなたの答えのような他の人が私を助けてくれるのに役立つでしょう。ありがとう!
イアンの答えは私を大いに助けてくれましたが、Curlコマンドを実行してエラーが発生し続けました。いくつかの調査を行い、アクセスコードを取得してトークンを更新する手順を簡単にすることで簡単にすることができました https://code.google.com/oauthplayground/ OAUTH構成設定を確認します。ページの右上に設定ボタンがあります。選択された「独自のOAuth資格情報を使用」。アクセスコードを取得し、ここから更新トークンをリクエストできます。
お役に立てれば。
手動でリフレッシュトークンを取得できます Oauthの遊び場。私のようにサービスアカウントに更新トークンが必要な場合は、確認してください
- 右側の設定をクリックします。
- 小切手 独自のOAuth資格情報を使用してください
- クライアントIDと秘密を入力します
- 設定を閉じます
- クリック リフレッシュします ステップ2のボタン
- 次に、アプリで使用するために更新トークンを保存します