문제

저는 일을 검색하고 Google-API-PHP-Client의 새롭고 이전 버전을 시도해 왔지만이 오류를 해결할 수는 없습니다. 아래 코드는 GitHub에서 검색 한 서비스 계정 예제이며 API 콘솔에서 자격 증명 및 파일을 삭제했습니다. 나는 실제로 건물을 짓고있는 다른 파일을 가지고 있지만이 질문에 사용하기 위해이 간단한 파일은 논의하기가 더 쉬울 것입니다. 두 파일과 동일한 오류가 발생합니다.

치명적인 오류 : P12 파일을 구문 분석 할 수없는 메시지가있는 'Google_AUTH_Exception'을 사용하지 않아도됩니다. 이게 .p12 파일입니까? 암호가 맞습니까? OpenSSL 오류 : /google-api-php-client/src/google/signer/src/google/signer/src/google/signer/p12.php 행 52

이 오류가 발생하는 이유에 대해 완전히 웅크 리고 있습니다.

"file_get_contents"가 실제로 파일의 내용을 가져오고 "notasecret"암호가 제대로 끌어 당겨지고 있습니다. 나는 이 최근의 커밋 이 도움이 될지 모르지만 불행히도, 이 오류를 해결하지 못했습니다.

여기서 뭔가 잘못되었는지 어떤 아이디어? 어떤 제안에 감사드립니다!

<?php

session_start();
include_once "templates/base.php";

set_include_path("../src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Books.php';


$client_id = 'xxxx.apps.googleusercontent.com';
$service_account_name = 'xxxx@developer.gserviceaccount.com';
$key_file_location = 'xxxx-privatekey.p12';

echo pageHeader("Service Account Access");
if ($client_id == 'xxxx.apps.googleusercontent.com'
    || !strlen($service_account_name)
    || !strlen($key_file_location)) {
  echo missingServiceAccountDetailsWarning();
}

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$service = new Google_Service_Books($client);

if (isset($_SESSION['service_token'])) {
  $client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/books'),
    $key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
  $client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();


$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
echo "<h3>Results Of Call:</h3>";
foreach ($results as $item) {
  echo $item['volumeInfo']['title'], "<br /> \n";
}

echo pageFooter(__FILE__);
.

도움이 되었습니까?

해결책 3

알았다!이 커밋 openssl이 우리를 좋아하지 않았다고 생각하게했습니다.파일도.나는 이 지침을 사용하여 파일을 p12로 변환했습니다. ...에그런 다음 "----- 시작하기 전에 일부 텍스트를 제거하기 위해 파일을 편집하여 새 커밋의 코드가 올바르게 인식 할 수 있도록 파일을 편집했습니다.그 파일을 떨어 뜨리고 마술처럼 결과를 얻었습니다.

그게!자동 생성 된 P12 파일이 협조되지 않도록 아직 확실하지 않으므로 누구나 아이디어가 있는지 알려주세요.

다른 팁

이 오류가 발생했습니다.이 오류도 내 경우 .P12 파일은 .p12 파일이 소유자에게만 읽을 수 없으며 그룹 및 기타 액세스 권한이 없습니다.나는 이것을 위해 2 일 동안 2 일을 보냈다 ...

이제 "사용자 가이 프로필에 대한 충분한 사용 권한이 없지만 적어도 새로운 것이 었습니다 !!

나는 방금 같은 문제로 인해 멈 춥니 다.P12 파일을 .pem (theonlynewts 제안)로 변환하면 저에게 작동하지 않았습니다..pem 파일 내의 "--- RSA 개인 키를 시작하십시오

그러나 이상하지만, 이것은 작동하지 않는 동안 (Google의 p12.php의 원래 코드) :

if (!openssl_pkcs12_read( $p12, $certs, $password)) { ...
.

이것은 작동합니다 :

$pkcs12 = file_get_contents( $p12 );
if (!openssl_pkcs12_read( $pkcs12, $certs, $password)) { ...
.

(Kubuntu 14.04에서 PHP 5.5.9 테스트)

코드 의이 섹션의 어딘가에 'NotaseCret'이라는 문구를 작성해야합니다.

$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/books'),
    $key
);
.

'어디에?'은 질문입니다 ...

이것은 올바른 코드가있는 것처럼 보입니다. https://github.com/google/google-api-php-client/blob/master/src/google/auth/assertioncredentials.php

IT를 테스트 한 후에이 작업을 확인하기 위해 내 대답을 업데이트합니다.

:)

일반적으로 파일 사용 권한 문제입니다.Apache를 실행하는 사용자가 P12 파일을 읽을 수있는 권한이 있는지 확인하십시오.

P12 파일을 구문 분석하는 동안 도전되었습니다.항상 "정의되지 않은 함수 OpenSSL_PKCS12_READ ()"과 같은 오류가 표시되었습니다. 이 오류를 제거하려면 먼저 php.ini 파일을 확인해야합니다. php.ini 괜찮아서 openssl을 검색 한 다음 줄무늬를 제거한 다음 줄무늬를 엽니 다.이제 모든 WAMP 서비스를 저장하고 다시 시작하십시오.

및 기능이 작동 중입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top