3

C# を使用して Google アナリティクスからメトリック データをダウンロードしようとしており、OAuth 2.0 でユーザー認証を実行しています。インストール済みアプリケーション認証フローを使用しています。これには、Google にログインし、コードをコピーしてアプリケーションに貼り付ける必要があります。google-api-dotnet-clientから取得したコードに従っています:

private void DownloadData()
{
    Service = new AnalyticsService(new BaseClientService.Initializer() {
        Authenticator = CreateAuthenticator(),
    });
    var request = service.Data.Ga.Get(AccountID, StartDate, EndDate, Metrics);
    request.Dimensions = Dimensions;
    request.StartIndex = 1;
    request.MaxResults = 10000;
    var response = request.Execute(); // throws Google.GoogleApiException
}

private IAuthenticator CreateAuthenticator()
{
    var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description) {
        ClientIdentifier = "123456789012.apps.googleusercontent.com",
        ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxx",
    };
    return new OAuth2Authenticator<NativeApplicationClient>(provider, Login);
}

private static IAuthorizationState Login(NativeApplicationClient arg)
{
    // Generate the authorization URL.
    IAuthorizationState state = new AuthorizationState(new[] { AnalyticsService.Scopes.AnalyticsReadonly.GetStringValue() });
    state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
    Uri authUri = arg.RequestUserAuthorization(state);

    // Request authorization from the user by opening a browser window.
    Process.Start(authUri.ToString());
    Console.Write("Google Authorization Code: ");
    string authCode = Console.ReadLine();

    // Retrieve the access token by using the authorization code.
    state = arg.ProcessUserAuthorization(authCode, state);
    return state;
}

Google アカウントxxxxxx@gmail.comは、クライアント ID とシークレットを登録しました。同じアカウントには、Google アナリティクスの完全な管理権限があります。Google アナリティクスからデータを取得しようとすると、認証プロセスが正常に機能しているように見えます。次に、次のように失敗します。

Google.GoogleApiException
Google.Api.Requests.RequestError
ユーザーには、このプロファイルに対する十分な権限がありません。[403]
エラー [
メッセージ[ユーザーには、このプロファイルに対する十分な権限がありません。] 場所[ - ] 理由 [不十分な権限] ドメイン[グローバル]
]

私はこれに数時間苦労しています。正しいユーザーが使用されており、Google アナリティクスで承認されていることを再確認しました。何が間違っているのか途方に暮れています。何を構成または変更する必要があるかについてのアイデアはありますか?

4

3 に答える 3

0

// この投稿をありがとう。必要なプロファイル ID は、アカウントの概要から読み取ることができます。

辞書プロファイル = 新しい Dictionary();

        var accounts = service.Management.AccountSummaries.List().Execute();
        foreach (var account in accounts.Items)
        {
            var profileId = account.WebProperties[0].Profiles[0].Id;

            profiles.Add("ga:" + profileId, account.Name);
        }
于 2015-04-06T14:56:07.213 に答える
0

これが役立ちます: https://developers.google.com/analytics/devguides/reporting/core/v3/coreErrors、エラー 403 を見てください。

于 2013-07-18T04:43:28.030 に答える