我在远程Web服务器上使用OAuth 2.0 for Web Server Applications示例代码。
$ client-> authenticate(...)导致
内部服务器错误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']);
}
答案 0 :(得分:0)
您使用的是哪个PHP版本? 我有一个类似的问题,因为我使用PHP 5.3,而谷歌api技术上需要5.4+。
如果更新它不是一个选项,我可以通过使用此处描述的解决方案来修复我的具体问题: SO link
可以在google api客户端文件夹的curl_reset()
中找到/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
的来电。