我的代码在这里:
google.php位于http://127.0.0.1/projects/google/google.php
:
<?php
require 'vendor/autoload.php';
session_start();
$client_id = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com';
$client_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$redirect_uri = 'http://127.0.0.1/projects/google/google.php';
$scope = 'https://www.googleapis.com/auth/drive.readonly';
$api_key ='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$code = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$client = new Google_Client();
$client->setApplicationName("Google Drive PHP SDK APP NAME");
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope($scope);
$client->setAccessType("offline");
$client->setDeveloperKey($api_key);
$authUrl = $client->createAuthUrl();
echo $authUrl;
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
// >>>ERROR HERE<<<
}
$driveSdk = new Google_Service_Drive($client);
$result = $driveSdk->files->listFiles();
访问$ authUrl(https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1%2Fprojects%2Fgoogle%2Fgoogle.php&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly&access_type=offline&approval_prompt=auto
)
我从谷歌获取代码,如http://127.0.0.1/projects/google/google.php?code=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
我在$ client-&gt; authenticate中使用它($ _ GET [&#39; code&#39;]);
但是我没有为令牌交换auth代码,而是Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Error fetching OAuth2 access token, message: 'invalid_client'' in D:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\google\vendor\google\apiclient\src\Google\Auth\OAuth2.php:132 Stack trace: #0 D:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\google\vendor\google\apiclient\src\Google\Client.php(130): Google_Auth_OAuth2->authenticate('4/v-8aFUcb0YyPS...') #1 D:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\google\google.php(31): Google_Client->authenticate('4/v-8aFUcb0YyPS...') #2 {main} thrown in D:\EasyPHP-DevServer-14.1VC11\data\localweb\projects\google\vendor\google\apiclient\src\Google\Auth\OAuth2.php on line 132
我记录了CURL: 请求HTTP标头是:
POST /o/oauth2/token HTTP/1.1 Host: accounts.google.com Accept: */* content-type: application/x-www-form-urlencoded content-length: 291
请求帖子正文:
code=4%2FSevLUuq8mtyfUYYb2FSZ5Q5mYexF.smYRm3eONugRPvB8fYmgkJzTRFXKkQI&grant_type=authorization_code&redirect_uri=http%3A%2F%2F127.0.0.1%2Fprojects%2Fgoogle%2Fgoogle.php&client_id=360693274514-a9orr65tr5f9elsfkfng2htls6cr308b.apps.googleusercontent.com&client_secret=Gb02td3zZv1T01IQt-sGlFVwH
回应是:
HTTP/1.1 401 Unauthorized Content-Type: application/json Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Fri, 01 Jan 1990 00:00:00 GMT Date: Mon, 06 Oct 2014 11:36:42 GMT X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Server: GSE Alternate-Protocol: 443:quic,p=0.01 Transfer-Encoding: chunked { "error" : "invalid_client" }
好像一切都做对了,但仍然是错误。
我无法得到它。任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
Google SDK的第115行没有错,请仔细检查您的$ client_id。似乎响应错误是正确的。