当每个可能的URI都在控制台

时间:2017-01-25 21:45:13

标签: php google-oauth google-api-php-client

我已经将所有可能的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=tokenedhttps://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

以下是开发控制台凭据的屏幕截图:

screenshot of dev console

这是我正在使用的代码:

<?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参数的同一页面,并获取访问令牌。

2 个答案:

答案 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列表中,您当前的重定向网址应该是第一个。