アカウント情報を取得するためにGoogleアナリティクスAPI(PHP)を使用していますが、以下を使用してrefrechトークンを取得しました。
if (isset($_SESSION['token'])) {
// echo $_SESSION['token'].'<br />';
$authObj = json_decode($_SESSION['token']);
$accessToken = $authObj->access_token;
$refreshToken = $authObj->refresh_token;
$tokenType = $authObj->token_type;
$expiresIn = $authObj->expires_in;
echo 'access_token = ' . $accessToken;
echo '<br />';
echo 'refresh_token = ' . $refreshToken;
echo '<br />';
echo 'token_type = ' . $tokenType;
echo '<br />';
echo 'expires_in = ' . $expiresIn;
echo '<br />';
}
その後、によって返された値をコピーし$refreshToken
、前の関数にコメントを付けて、次のようにメソッドを呼び出します。
$refreshToken = '1/YZiV9J********vMjey8*****************';
$client->refreshToken($refreshToken);
これは完璧に機能しますが、アクセストークンが期限切れになったことを通知する1時間後のエラーが発生します。
アクセストークンの有効期限が切れていることをどのように知ることができますか。この投稿を見つけました。男は問題を解決しましたが、回答を投稿しませんでした。また、ターミナルを介してコードを実行しているため、認証プロセスを再度実行せずに、同じrefrechトークンを使用して新しいトークンを生成するにはどうすればよいですか。
プロジェクトの抜粋を以下に投稿しました。
ありがとう!
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_AnalyticsService.php';
$scriptUri = 'http://domainname.com';
session_start();
$client = new Google_Client();
$client->setApplicationName('Google Analytics project');
$client->setClientId('************.apps.googleusercontent.com');
$client->setClientSecret('S**********************1T');
$client->setRedirectUri($scriptUri);
$client->setDeveloperKey('**************************-1c');
$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
$client->setAccessType('offline');
$client->setUseObjects(true);
if (isset($_GET['code'])) {
$client->authenticate();
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['token'])) {
$authObj = json_decode($_SESSION['token']);
$accessToken = $authObj->access_token;
$refreshToken = $authObj->refresh_token;
$tokenType = $authObj->token_type;
$expiresIn = $authObj->expires_in;
}
if (!$client->getAccessToken()) {
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
// Create analytics service object. See next step below.
$analytics = new Google_AnalyticsService($client);
runMainDemo($analytics);
}
function runMainDemo(&$analytics) {
try {
// Step 2. Get the user's first profile ID.
$profileId = getProfileId($analytics);
if (isset($profileId)) {
// Step 3. Query the Core Reporting API.
$results = getResults($analytics, $profileId);
// Step 4. Output the results.
printResults($results);
}
}
catch (apiServiceException $e) {
// Error from the API.
print 'There was an API error : ' . $e->getCode() . ' : ' . $e->getMessage();
}
catch (Exception $e) {
print 'There wan a general error : ' . $e->getMessage();
}
}
function getProfileId(&$analytics) {
//My code to retrieve data
}