Comment puis-je obtenir une mise à jour du jeton d'accès, à l'aide stockées jeton d'actualisation
Je suis en train de construire une application qui permet à l'admin pour authentifier l'accès à leur compte google analytics pour un usage hors-ligne et magasins de l'actualisation jeton dans la base de données.
Maintenant quand j'essaye de l'utilisation de l'API sur le frontend, il renvoie l'erreur suivante:
"Access Token Expired. There wan a general error : The OAuth 2.0 access token has expired, and a refresh token is not available. Refresh tokens are not returned for responses that were auto-approved."
Voici mon code qui génère cette erreur:
require_once "lib/google/Google_Client.php";
require_once "lib/google/contrib/Google_AnalyticsService.php";
$_analytics = new analytics();
$_googleClient = new Google_Client();
$_googleClient->setClientId($_analytics->gaClientId);
$_googleClient->setClientSecret($_analytics->gaClientSecret);
$_googleClient->setRedirectUri($_analytics->gaRedirectUri);
$_googleClient->setScopes($_analytics->gaScope);
$_googleClient->setAccessType($_analytics->gaAccessType);
//Returns last access token from the database (this works)
$_tokenArray['access_token'] = $_analytics->dbAccessToken($_agencyId);
$_googleClient->setAccessToken(json_encode($_tokenArray));
if($_googleClient->isAccessTokenExpired()) {
//Don't think this is required for Analytics API V3
//$_googleClient->refreshToken($_analytics->dbRefreshToken($_agencyId));
echo 'Access Token Expired'; //Debug
}
if (!$_googleClient->getAccessToken()) {
echo '<h2>Error - Admin has not setup analytics correct yet</h2>';
}
Je suis après une fonction à exécuter quelque chose comme setRefreshToken - saisie de la valeur de la base de données, à partir de l'admin précédemment authentification en ligne.
OriginalL'auteur mattpark22 | 2013-04-02
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce qui suit, vous devez ajouter dans le code pour enregistrer le nouveau jeton dans votre base de données.
- Vous savez comment je peux forcer un jeton d'accès à l'expiration de test à l'aide de l'actualisation jeton de fonction pour obtenir un nouveau jeton d'accès? @mpark
vous devriez être en mesure d'exécuter
$_googleClient->refreshToken($NewAccessToken->refresh_token);
pour forcer un nouveau jeton. Ensuite, il suffit de comparer l'ancien jeton avec le nouveau pour voir si sa a changé.Je reçois
Missing argument 1 for Google_Client::authenticate(),
une idée?Marque & RafaSashi : Cette réponse était valable à l'époque, il semble que le kit de développement a été mis à jour, cela ne fonctionne plus. developers.google.com/api-client-library/php/guide/migration
OriginalL'auteur Gareth Luckett
Utiliser un try/catch et l'utilisation de l'attraper pour la redirection/actualisation du jeton d'accès.
Ci-dessous est la solution que j'ai utilisée pour un problème similaire:
Vous pouvez remplacer la déclaration en vertu de l'essayer avec la ligne de lancer l'exception, je suppose que ce serait
ou vous pouvez également essayer de rafraîchir le jeton comme par la solution donnée ici:
https://stackoverflow.com/a/22096740/1675384
OriginalL'auteur Anshu Prateek