当前位置: 首页 > 知识库问答 >
问题:

Google分析API权限不足403错误

沃威
2023-03-14

我使用谷歌分析管理API帐户用户链接:列表

我正在尝试获取帐户用户列表...

try {
    $accountUserlinks = $analytics->management_accountUserLinks->listManagementAccountUserLinks('123456');
    } 
catch (apiServiceException $e) {
     print 'There was an Analytics API service error ' . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
    print 'There was a general API error ' . $e->getCode() . ':' . $e->getMessage();
}

我得到以下错误

{“error”:{“errors”:[{“domain”:“global”,“reason”:“insufficientPermissions”,“message”:“权限不足”}],“code”:403,“message”:“权限不足”}}

在Google Analytics中,我设置了所有权限

编辑协作阅读

例如:

$analytics->management_goals ->listManagementGoals  - work

$analytics->management_accountUserLinks>listManagementAccountUserLinks -  get 403 insufficientPermissions error

如何修复它?

分析服务提供商

class AnalyticsServiceProvider extends ServiceProvider
{
/**
 * Bootstrap the application events.
 */
public function boot()
{
    $this->publishes([
        __DIR__.'/../config/analytics.php' => 
config_path('analytics.php'),
    ]);
}

/**
 * Register the service provider.
 */
public function register()
{
    $this->mergeConfigFrom(__DIR__.'/../config/analytics.php', 
'analytics');

    $this->app->bind(AnalyticsClient::class, function () {
        $analyticsConfig = config('analytics');

        return 
    AnalyticsClientFactory::createForConfig($analyticsConfig);
    });

    $this->app->bind(Analytics::class, function () {
        $analyticsConfig = config('analytics');

        $this->guardAgainstInvalidConfiguration($analyticsConfig);

        $client = app(AnalyticsClient::class);

        return new Analytics($client, $analyticsConfig['view_id']);
    });

    $this->app->alias(Analytics::class, 'laravel-analytics');
}

protected function guardAgainstInvalidConfiguration(array 
$analyticsConfig = null)
{
    if (empty($analyticsConfig['view_id'])) {
        throw InvalidConfiguration::viewIdNotSpecified();
    }
    if 
(is_array($analyticsConfig['service_account_credentials_json'])) {
        return;
    }
    if (! 
file_exists($analyticsConfig['service_account_credentials_json'])) 
{
        throw InvalidConfiguration::credentialsJsonDoesNotExist
($analyticsConfig['service_account_credentials_json']);
    }
}
}

分析。php

return [

/*
 * The view id of which you want to display data.
 */
'view_id' => env('ANALYTICS_VIEW_ID'),

/*
 * Path to the client secret json file. Take a look at the README 
 of this package
 * to learn how to get this file. You can also pass the credentials 
 as an array
 * instead of a file path.
 */
'service_account_credentials_json' => 
storage_path('app/analytics/service-account-credentials.json'),

/*
 * The amount of minutes the Google API responses will be cached.
 * If you set this to zero, the responses won't be cached at all.
 */
'cache_lifetime_in_minutes' => 60 * 24,

 /*
 * Here you may configure the "store" that the underlying 
 Google_Client will
 * use to store it's data.  You may also add extra parameters that 
 will
 * be passed on setCacheConfig (see docs for google-api-php- 
 client).
 *
 * Optional parameters: "lifetime", "prefix"
 */
'cache' => [
    'store' => 'file',
],
];

服务帐户凭据

 {
"type": "service_account",
"project_id": "buyers-analytic",
"private_key_id": "*****",
"private_key": "-----BEGIN PRIVATE KEY-----\*******",
"client_email": "buyeranalytic@buyers- 
analytic.iam.gserviceaccount.com",
"client_id": "***********",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": 
"https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": 
"https://www.googleapis.com/robot/v1/metadata/x509/***.iam.gservi
ceaccount.com"
}

共有2个答案

诸葛皓
2023-03-14

尝试插入Analytics帐户设置中找到的帐户ID,而不是此代码行中的“123456”:

... management_accountUserLinks->listManagementAccountUserLinks('**123456**');

此外,服务帐户需要具有帐户级别的访问权限。

陈实
2023-03-14
"error":{  
   "errors":[  
      {  
         "domain":"global",
         "reason":"insufficientPermissions",
         "message":" Insufficient Permission"
      }
   ],
   "code":403,
   "message":"Insufficient Permission"
}

确切地说,你没有权限去做你想做的事情。

帐户用户链接:列表需要以下范围

  • https://www.googleapis.com/auth/analytics.manage.users
  • https://www.googleapis.com/auth/analytics.manage.users.readonly

Goals.list需要以下范围。

  • https://www.googleapis.com/auth/analytics

为了使用第一种方法,您需要修复身份验证并请求用户的其他作用域。在请求中添加了其他作用域后,您将需要再次对用户进行身份验证。

示例

function initializeAnalytics()
{
  // Creates and returns the Analytics Reporting service object.

  // Use the developers console and download your service account
  // credentials in JSON format. Place them in this directory or
  // change the key file location if necessary.
  $KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json';

  // Create and configure a new client object.
  $client = new Google_Client();
  $client->setApplicationName("Hello Analytics Reporting");
  $client->setAuthConfig($KEY_FILE_LOCATION);
  $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly', 'https://www.googleapis.com/auth/analytics.manage.users.readonly']);
  $analytics = new Google_Service_Analytics($client);

  return $analytics;
}

我不知道你从哪里得到你正在使用的代码。我建议使用谷歌官方样本。服务帐户需要在帐户级别授予其访问权限。我已经添加了一个示例,演示了如何设置范围。你只需要在你的代码中找到你设置范围的地方,我在你发布的任何内容中都看不到。我还有一些创建ServiceAccount的示例。php

 类似资料:
  • 好的,正如标题所建议的谷歌分析API问题。。。 null null Analytics Google API错误403:“用户没有任何Google Analytics帐户” Google Analytics API:“用户对此帐户没有足够的权限。” 但仍然无法让它工作。我添加了范围,如下所示: 现在,我有我试图查询的视图id(profile):code46034120/code>,所以我得到了服务

  • 我正在尝试从Google-Analytics访问数据。我正在遵循指南,并且能够对我的用户进行G授权,并从OAuth获得代码。 当我试图从GA访问数据时,我只得到403个不够的权限。我是否必须将我在Google API控制台中的项目连接到我的分析项目?我该怎么做?还是有什么其他原因让我得到403不够的权限回来? 我正在用Python和Django做这件事,而且我已经打开了我的API控制台的Analy

  • 在使用Python创建存储桶时,我面临着这个问题。它清楚地表明我没有足够的权限,但我并没有犯错误。 我使用以下设置创建了一个实例:默认服务号、使用默认范围的Cloud API默认访问。 这是我收到的错误的回溯:

  • 我从一些来自Google的App Engine的示例代码开始。 我的应用程序需要使用目录API和报表API从谷歌管理SDK。 我已经在API控制台中创建了一个项目,并在Services中打开了Admin SDK。 我将作用域(与下面代码中使用的作用域相同)添加到我域的Google cPanel中高级工具的“Manage API client Access”部分。 null 之后,对Reports

  • 我试图通过API向我的Google Analytics帐户添加用户,但代码产生了以下错误: googleapiclient.errors.httperror:https://www.googleapis.com/analytics/v3/management/accounts/**accountid**/entityuserlinks?alt=json返回“权限不足&>”; 我对此帐户拥有管理员权