我正在远程 Web 服务器上使用 OAuth 2.0 for Web Server 应用程序示例代码。
$client->authenticate(...) causes
内部服务器错误 500。
不知道为什么,你能帮我吗?
这是网址:http://imperiousgroup.com/gdrive/
这是代码:
//index.php
require_once(__DIR__ ."/api/vendor/autoload.php");
session_start();
$client = new Google_Client();
$client->setAuthConfig('client_secrets.json');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$drive_service = new Google_Service_Drive($client);
$files_list = $drive_service->files->listFiles(array())->getItems();
echo json_encode($files_list);
} else {
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/gdrive/oauth2callback.php';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
//oauth2callback.php
require_once __DIR__ .'/api/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfigFile('client_secrets.json');
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/gdrive/oauth2callback.php');
$client->addScope(Google_Service_Drive::DRIVE_METADATA_READONLY);
if (!isset($_GET['code'])) {
$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
}
您使用的是哪个 PHP 版本? 我遇到了类似的问题,因为我使用 PHP 5.3,而 google api 技术上需要 5.4+。
如果无法更新它,我可以使用此处描述的解决方案解决我的特定问题: SO链接
对
curl_reset()
的调用位于 google api 客户端文件夹中的 /vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
中。