我已经将所有可能的URI调用来自PHP库的任何OAUTH 2.0代码或库重定向到dev控制台凭据中的任何页面。正斜杠,没有。
我收到此错误的页面的确切URI是在控制台中。它不是在讨论我目前使用的URI,它是原始URI吗?这仍然没有意义,因为它也在控制台中。
我得到此错误的URI与控制台中的内容之间的唯一区别是它最后有一个#url片段。但是当我尝试在控制台中添加它时,我得到一个错误 - 我假设因为不允许碎片。
我不知道这个片段来自哪里,但是在获得我的授权代码后,我通过更改PHP标头位置来访问该页面:
return header('Location: https://website.com/m/?mail=tokened');
错误所在的页面的URI以及上面的代码行是:https://website.com/m/?mail=tokened#
,控制台中的URI是https://website.com/m/?mail=tokened
和https://website.com/m?mail=tokened
。
更新
以下是我得到的确切错误:
array(2){[“error”] => string(21)“redirect_uri_mismatch”[“error_description”] => string(11)“Bad Request”}
在此页面:https://keyreader.xyz/m?mail=tokened
以下是开发控制台凭据的屏幕截图:
这是我正在使用的代码:
<?php
session_start();
if(isset($_GET['mail']) && $_GET['mail']==='approved'){
setcookie('authCode', $_GET['code'], time()+(60*60), '/');
return header('Location: https://keyreader.xyz/m/?mail=tokened');
}
if(isset($_GET['mail']) && $_GET['mail']==='tokened'){
require_once 'php/vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('php/client_secret.json');
$client->setAccessType('offline');
$client->setApprovalPrompt('force');
$client->addScope(array('email', 'profile'));
var_dump($client->fetchAccessTokenWithAuthCode(urldecode($_COOKIE['authCode'])));
} ?>
所以我正在获取授权代码并将其存储在cookie中,因为我认为url中的代码参数具有不同代码的值,导致重定向错误,因为每次url都不同,我不能把它放在控制台里。然后我重定向到没有url中的code参数的同一页面,并获取访问令牌。
答案 0 :(得分:1)
不确定原因,但是从开发控制台删除所有URL然后重新输入它们然后下载了一个新的client_secrets文件似乎有用了!
答案 1 :(得分:0)
更改重定向网址后,您必须更新client_id.json文件,因为它包含重定向网址。
{"web":
{
"client_id":"xxxx.apps.googleusercontent.com",
"project_id":"some-xxx",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"xxxxxxxxxx",
"redirect_uris":[
"http://website.com/getGoogleUrl",
"http://website.dev/getGoogleUrl"
]
}}
在redirect_uris列表中,您当前的重定向网址应该是第一个。