Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php google OAUTH2为acces令牌交换授权码;无效请求“;_Php_Google Api_Authorization_Access Token - Fatal编程技术网

Php google OAUTH2为acces令牌交换授权码;无效请求“;

Php google OAUTH2为acces令牌交换授权码;无效请求“;,php,google-api,authorization,access-token,Php,Google Api,Authorization,Access Token,我正在从我的服务器上的这个页面获取google api授权代码 https://github.com/google/google-api-php-client/blob/master/examples/user-example.php 在我的主机上的同一页进行测试 http://mawk3y.net/google/google-api-php-client/examples/user-example.php 调整客户端id、机密和重定向uri后 $data =file_get_content

我正在从我的服务器上的这个页面获取google api授权代码

https://github.com/google/google-api-php-client/blob/master/examples/user-example.php
在我的主机上的同一页进行测试

http://mawk3y.net/google/google-api-php-client/examples/user-example.php
调整客户端id、机密和重定向uri后

$data =file_get_contents('https://accounts.google.com/o/oauth2/auth?code='.$code.'&client_secret={secret}&redirect_uri={my web page}&grant_type=authorization_code');
print_r($data);
但是我遇到了一个错误,所以在从该页面获取授权代码后,我尝试将完整的url粘贴到浏览器地址栏,如下所示(与我从该页面获取的授权代码相同)

但结果是

{
"error" : "invalid_request"
}

如何解决此问题并为访问令牌交换授权代码

您正在向授权端点()发送GET请求中的参数,但必须在POST请求中向令牌端点()发送参数。

这是相同的uri所有数据都从API控制台复制以避免错误[UPDATE]在问题中添加了我的主机上的测试url在仔细检查您的params/URLsinside文档ready$.post({code}&client_secret={secret}&redirect_uri={uri}&grant_type=authorization_code')后更改了答案。完成(函数(数据){console.log(data)})。失败(函数(){console.log('failed');});结果是“跨源请求被阻止:同源策略不允许在{code}&client\u secret={secret}&redirect\u uri={redirect uri}&grant\u type=authorization\u code读取远程资源。这可以通过将资源移动到同一域或启用CORS.token来解决。”“javascript从何而来?您应该按照原始问题中的建议,用PHP处理令牌请求,例如使用CURL,如这里的答案中所述:跟随答案并获得字符串(72)“{”error:“invalid_grant”,“error_description:“invalid code.”虽然这是我从谷歌获得的授权码,但它甚至与我从谷歌获得的代码相同,我认为这是因为它已过期或已被使用,所以我如何才能获得新的授权码
{
"error" : "invalid_request"
}