问题
I have developed a PHP application which will send refund data to analytics. I want to send the refund via data upload. I use the Google APIs PHP client library so the following code uses the method you can find here: https://github.com/google/google-api-php-client-services/blob/a016ea7b6d47e1fd1f43d89ebd80059d4bfadb32/src/Google/Service/Analytics/Resource/ManagementUploads.php
$dataTxt = "ga:transactionId;ga:quantityRefunded;ga:productSku;ga:productPrice
dcn15355709483497;1;2811841;38.47
dcn15360003605123;1;3568636;89.35
dcn15359475814131;1;4238610;28.98";
$accountId = "xxxx"; # admin -> choose account -> view properties
$webPropertyId = "xxxx"; # admin -> choose property -> view properties
$customDataSourceId = "xxxx";
$data = array(
'data' => $dataTxt,
'mimeType' => 'application/octet-stream',
'uploadType' => 'media');
try {
$this->service->management_uploads->uploadData(
$accountId,
$webPropertyId,
$customDataSourceId,
$data
);
} 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();
}
I gave the API user full access and granted him anything. i still get the error:
Error calling POST https://www.googleapis.com/upload/analytics/v3/management/accounts/2465955/webproperties/UA-2465955-20/customDataSources/gx3hqqEjR7qBrcgrIDkToQ/uploads?uploadType=media: (403) Insufficient Permission
I hope someone can help me, because i run out of answeres and questions.
回答1:
(403) Insufficient Permission
Means that the user you are authenticated with has not granted you enough permissions to do what you are trying to do. Unfortunately you have not included your authentication code. But i can tell you that upload data
Requires that the user be authenticated with one of the following scopes
- https://www.googleapis.com/auth/analytics
- https://www.googleapis.com/auth/analytics.edit
You should be following this example for authecation PHP quick start make sure that you are using the proper scope.
Then the following request will run.
/**
* Note: This code assumes you have an authorized Analytics service object.
* See the Data Import Developer Guide for details.
*/
/**
* This request uploads a file to a custom data source.
*/
try {
$analytics->management_uploads->uploadData(
'123456',
'UA-123456-1',
'122333444455555',
array('data' => file_get_contents('example.csv'),
'mimeType' => 'application/octet-stream',
'uploadType' => 'media'));
} 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();
}
来源:https://stackoverflow.com/questions/52183820/google-analytics-api-v3-analytics-management-uploads-uploaddata-insufficient-p