web-dev-qa-db-fra.com

API Google Cloud - Informations d'identification par défaut de l'application

J'ai le code suivant, modifié à partir de documentation de Google :

        $GOOGLE_APPLICATION_CREDENTIALS = "./[path].json";
        $_ENV["GOOGLE_APPLICATION_CREDENTIALS"] = "./[path].json";
        $_SERVER["GOOGLE_APPLICATION_CREDENTIALS"] = "./[path].json";

        $projectId = "[my project's ID']";
        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->setScopes(['https://www.googleapis.com/auth/books']);
        $service = new Google_Service_Books($client);
        $results = $service->volumes->listVolumes('Henry David Thoreau');

Pourtant, lorsque je l'exécute, il renvoie l'erreur:

PHP Fatal error:  Uncaught exception 'DomainException' with message 'Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information'

J'ai essayé différentes configurations, par exemple en changeant le chemin du fichier. Comme vous le voyez, j'ai également fait les trois différentes formes de variables auxquelles je pouvais penser immédiatement (deux environnement, un pas).

Je ne sais pas trop où chercher ensuite. Dois-je étudier différentes façons de définir la variable d'environnement ou dois-je définir le chemin d'une manière différente? Quelles sont les bonnes façons de procéder? Y a-t-il une autre raison à l'erreur?

13
Laef

Vous devez utiliser putenv() ( http://php.net/manual/en/function.putenv.php ) au lieu d'essayer d'utiliser l'une des méthodes que vous avez utilisées ( $_ENV ou $_SERVER).

Tiré de https://github.com/google/google-api-php-client/blob/master/UPGRADING.md#google_auth_assertioncredentials-has-been-removed

// OR use environment variables (recommended)

putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');
$client->useApplicationDefaultCredentials();
29
jkns.co

Je suis d'accord avec la réponse ci-dessus, mais je veux seulement décrire si l'utilisateur obtient une erreur en php en utilisant nlp google:

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

# Imports the Google Cloud client library
use Google\Cloud\Language\LanguageClient;
putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/sgupta/www/practise/nlp/google/cred.json'); //your path to file of cred
//$client->useApplicationDefaultCredentials();
# Your Google Cloud Platform project ID
$projectId = 'nlp-project-nname'; //your project name

# Instantiates a client
$language = new LanguageClient([
    'projectId' => $projectId
]);

# The text to analyze
$text = 'Sachin Tendulkar';



# Detects the sentiment of the text
$annotation = $language->analyzeSentiment($text);
$sentiment = $annotation->sentiment();
echo "<pre>";
print_r($annotation); die;

echo 'Text: ' . $text . '
Sentiment: ' . $sentiment['score'] . ', ' . $sentiment['magnitude'];
?>
2
sunil

Alternativement, vous pouvez définir un chemin d'accès à votre fichier json comme celui-ci

$client = new Google_Client();
$client->setAuthConfig('/path/to/credentials.json');
0
Christian

Utilisez celui-ci, ça marche pour moi

# Includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

putenv('GOOGLE_APPLICATION_CREDENTIALS=../service-account.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
$accessToken = $token['access_token'];
0
Parmar Balvant