相关疑难解决方法(0)

具有公共访问权限的Web应用程序的Google OAuth 2.0刷新令牌

我收到以下错误:

OAuth 2.0访问令牌已过期,并且刷新令牌不可用.对于自动批准的响应,不会返回刷新令牌

我有一个只有我的服务器才能访问的Web应用程序,初始身份验证工作正常,但一小时后,弹出上述错误消息.我的脚本看起来像这样:

require_once 'Google/Client.php';     
require_once 'Google/Service/Analytics.php';       
session_start();

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey("{MY_API_KEY}");
$client->setClientId('{MY_CLIENT_ID}.apps.googleusercontent.com');
$client->setClientSecret('{MY_KEY}');
$client->setRedirectUri('{MY_REDIRECT_URI}');
$client->setScopes(array('https://www.googleapis.com/auth/gmail.readonly'));

if (isset($_GET['code'])) {
    $client->authenticate($_GET['code']);  
    $_SESSION['token'] = $client->getAccessToken();
    $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

if (!$client->getAccessToken() && !isset($_SESSION['token'])) {
    $authUrl = $client->createAuthUrl();
    print "<a class='login' href='$authUrl'>Connect Me!</a>";
}
Run Code Online (Sandbox Code Playgroud)

如何为此设置刷新令牌?

编辑1:我也尝试过使用服务帐户.我按照GitHub上提供的文档:

https://github.com/google/google-api-php-client/blob/master/examples/service-account.php

我的脚本看起来像这样:

session_start();
include_once "templates/base.php";
require_once 'Google/Client.php';
require_once 'Google/Service/Gmail.php';
$client_id = '{MY_CLIENT_ID}.apps.googleusercontent.com'; 
$service_account_name = '{MY_EMAIL_ADDRESS}@developer.gserviceaccount.com ';
$key_file_location = 'Google/{MY_KEY_FILE}.p12';
echo pageHeader("Service Account Access");
    if …
Run Code Online (Sandbox Code Playgroud)

php gmail google-oauth google-api-php-client

6
推荐指数
1
解决办法
7917
查看次数

标签 统计

gmail ×1

google-api-php-client ×1

google-oauth ×1

php ×1