Hier ist die Lösung, die ich gefunden habe.
Für P12 Key
Normalerweise verwenden wir den folgenden Code ein Token zu erzeugen.
public static function getToken()
{
$key = file_get_contents(APPLICATION_DIR.'/'.APPLICATION_GOOGLE_CLIENT_KEY_FILE);
$cred = new Google_Auth_AssertionCredentials(
APPLICATION_GOOGLE_CLIENT_EMAIL,
array('https://spreadsheets.google.com/feeds'),
$key
);
$client = new Google_Client();
$client->setAssertionCredentials($cred);
if (!$client->getAuth()->isAccessTokenExpired()) {
return false;
}
else {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$service_token = json_decode($client->getAccessToken());
return $service_token->access_token;
}
Für JSON Key
Aber jetzt nicht P12 Schlüssel haben wir haben wir einen JSON Schlüssel haben, so dass ich unten einen Blick nur einige Änderungen in den obigen Code aus, nehmen Sie bitte:
public static function getToken()
{
$key = APPLICATION_DIR.'/'.APPLICATION_GOOGLE_CLIENT_KEY_FILE;
$data = json_decode(file_get_contents($key)); // here i decoded the json
if (isset($data->type) && $data->type == 'service_account') {
$cred = new Google_Auth_AssertionCredentials(
APPLICATION_GOOGLE_CLIENT_EMAIL, // it's the client email
array('https://spreadsheets.google.com/feeds'), // it's google spreadsheet scope
$data->private_key // here is the private key
);
}
$client = new Google_Client();
$client->setAssertionCredentials($cred);
if (!$client->getAuth()->isAccessTokenExpired()) {
return false;
}
else {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$service_token = json_decode($client->getAccessToken());
return $service_token->access_token;
}
Haben Sie die Anweisungen zum Erstellen eines JSON-Schlüssels befolgt? – tam5
Können Sie Ihre Implementierung zeigen? – yergo
@Insomania arbeitest du noch daran? – Twisty