Ключ API p12 Google не читается: ошибка: 0D0680A8: процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег

ДЛЯ ТОГО, ЧТОБЫ НАЙТИ ЭТО — эта ошибка произошла из-за повреждения .p12 после загрузки на коробку win7. После загрузки на Unix-машину сертификат работал.

Я проследил около миллиона разных гидов, пытаясь заставить это работать.

Я пытаюсь подключиться к API Google Analytics с учетная запись службы.

У меня есть соответствующий «проект», созданный в консоли, учитывая, что указанный проект требует доступа к соответствующему API.

В учетные данные я добавил служебную учетную запись в разделе OAuth, скачал ключ p12 и сохранил на сервере.

Когда я запускаю код:

//start the google v3 api server authorization with the .p12 key
$client = new \Google_Client();
$client->setApplicationName("AnalyticsAPI");

$key = __DIR__ . '/google-keys/AnalyticsAPI-XXXXXX.p12';

$credentials = new \Google_Auth_AssertionCredentials(
'[email protected]',
array('https://www.googleapis.com/auth/analytics.readonly'),
$key
);
$client->setAssertionCredentials($credentials);
//auto refresh if old
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($credentials);
}

//start the analytics shtuff
$service = new \Google_Service_Analytics($client);
$accounts = $service->management_accountSummaries->listManagementAccountSummaries();

//Adding Dimensions
$params = array('dimensions' => 'ga:pagePath');
// requesting the data
$data = $service->data_ga->get("ga:$profile_id", $start_date,  $end_date, "ga:users,ga:sessions", $params );

print_r($data);

Ошибка выдается из «Google / Signer / P12.php на линии 52»

Unable to parse the p12 file. Is this a .p12 file? Is the password correct? OpenSSL error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag in /XXXXX/classes/google-api-php-client-master/src/Google/Signer/P12.php on line 52

Ошибка выдается из … Signer / P12.php @ 49:

// This throws on error
$certs = array();
if (!openssl_pkcs12_read($p12, $certs, $password)) {
throw new Google_Auth_Exception(
"Unable to parse the p12 file.  " .
"Is this a .p12 file?  Is the password correct?  OpenSSL error: " .
openssl_error_string()
);
}

Когда я извлекаю соответствующий код, пытающийся прочитать файл .p12 и запустить его самостоятельно, я получаю ту же ошибку:

$certs = array();
openssl_pkcs12_read($key, $certs, 'notasecret');
print_r($certs);
echo openssl_error_string();
die(x);Array ( ) error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

Я полностью в тупике. Читая некоторые другие сообщения по этому вопросу, как этот:
Получение "Невозможно разобрать файл p12 …" Ошибка с google-api-php-client

я пытался

  1. Обеспечение прав являются правильными.
  2. file_get_contents($key) а затем переходя к openssl_pkcs12_read который дает такие же результаты!

У кого-нибудь есть какие-нибудь подсказки?

2

Решение

  1. Убедитесь, что у вас установлена ​​последняя версия библиотеки clint GitHub
  2. предоставить адрес электронной почты учетной записи службы для доступа к Google Analytics на УЧЕТНАЯ ЗАПИСЬ уровень
  3. Попробуйте этот урок Сервисный аккаунт Google с PHP

    session_start();
    require_once 'Google/Client.php';
    
    require_once 'Google/Service/Analytics.php';
    
    /************************************************
    The following 3 values an befound in the setting
    for the application you created on Google
    Developers console.      Developers console.
    The Key file should be placed in a location
    that is not accessable from the web. outside of
    web root.        web root.
    
    In order to access your GA account you must
    Add the Email address as a user at the
    ACCOUNT Level in the GA admin.
    ************************************************/
    
    $client_id = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp.apps.googleusercontent.com';
    $Email_address = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp@developer.gserviceaccount.com';
    $key_file_location = '629751513db09cd21a941399389f33e5abd633c9-privatekey.p12';
    $client = new Google_Client();
    $client->setApplicationName("Client_Library_Examples");
    
    $key = file_get_contents($key_file_location);
    
    // seproate additional scopes with a comma
    $scopes ="https://www.googleapis.com/auth/analytics.readonly";
    
    $cred = new Google_Auth_AssertionCredentials(
    
    $Email_address,
    array($scopes),
    $key
    );
    $client->setAssertionCredentials($cred);
    if($client->getAuth()->isAccessTokenExpired()) {
    $client->getAuth()->refreshTokenWithAssertion($cred);
    }
    $service = new Google_Service_Analytics($client);
    $accounts = $service->management_accountSummaries->listManagementAccountSummaries();
    
    //calulating start date
    $date = new DateTime(date("Y-m-d"));
    $date->sub(new DateInterval('P10D'));
    //Adding Dimensions
    $params = array('dimensions' => 'ga:userType');
    // requesting the data
    $data = $service->data_ga->get("ga:78110423", $date->format('Y-m-d'), date("Y-m-d"), "ga:users,ga:sessions", $params );
    ?><html>
    <?php echo $date->format('Y-m-d') . " - ".date("Y-m-d"). "\n";?>
    <table>
    <tr>
    <?php
    //Printing column headers
    foreach($data->getColumnHeaders() as $header){
    print "<td>".$header['name']."</td>";
    }
    ?>
    </tr>
    <?php
    //printing each row.
    foreach ($data->getRows() as $row) {
    print "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td></tr>";
    }
    //printing the total number of rows
    ?>
    <tr><td colspan="2">Rows Returned <?php print $data->getTotalResults();?> </td></tr>
    </table>
    </html>
    

код извлечен из ранее упомянутого урока.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]