使用PHP cURL获取access_token时,Google OAuth2.0返回“ invalid_request”

Xtremefaith

我遇到了与此处所述相同的问题” PHP中使用CURL的POST发出无效请求错误。在遇到该帖子之前,我的代码已经像接受的答案一样进行了设置。

// First I get the access code like so
function get_oauth_code($wpoa) {
    $params = array(
        'response_type' => 'code',
        'client_id' => CLIENT_ID,
        'scope' => SCOPE,
        'state' => uniqid('', true),
        'redirect_uri' => REDIRECT_URI,
    );
    $_SESSION['WPOA']['STATE'] = $params['state'];
    $url = URL_AUTH . http_build_query($params);
    header("Location: $url");
    exit;
}

$params = array(
    'grant_type' => 'authorization_code',
    'client_id' => CLIENT_ID,
    'client_secret' => CLIENT_SECRET,
    'code' => $_GET['code'],
    'redirect_uri' => REDIRECT_URI,
);
$url_params = http_build_query($params);
$url = URL_TOKEN . $url_params;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, (get_option('wpoa_http_util_verify_ssl') == 1 ? 1 : 0));
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, (get_option('wpoa_http_util_verify_ssl') == 1 ? 2 : 0));
        $result = curl_exec($curl);

当我第一次尝试登录时,此方法工作正常,但是如果我注销并重新尝试(并非每次都登录,但始终如一),它将返回以下错误响应

Array ( [error] => invalid_request )

由于对该答案的以下评论,我认为也许access_code正在以某种方式重用,但是我进行了设置以确保问题仍然存在。这证明当收到invalid_request错误时,我实际上具有访问代码:

Array( 
    [state] => 57c8b107a5a021.27458568 
    [code] => 4/Q8bswW3yheJ6tLFQnTd-pkfG6zVdbMk9UehgroR7f60 
)

我一般不熟悉OAuth,但是整周都在处理它,因此变得非常熟悉,但是希望那里的人比我了解的更多,以帮助我解决这个问题。我想确保由于服务器端脚本中的某些会话详细信息,用户永远不会遇到登录问题。

注意:这是与Perry Butler的WP-OAuth插件协作

格雷格·博博努斯(Greg Borbonus)

我对google oauth不太熟悉,我想回答这个问题是权威,但是我从您的代码中看到了一些问题。

1,您有很多定义显然不在此代码范围之内。2,您的url被附加所有应该应用于请求帖子的参数。

我要尝试的第一件事是更改此行:

$url = URL_TOKEN . $url_params;

至:

$url = URL_TOKEN;

在请求中也添加一些调试,并显示正在调用的$ url。似乎没有任何超出规范的范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

春天的谷歌oauth2不返回access_token

google服务帐户示例返回“刷新OAuth2令牌时发生错误{“ error”:“ invalid_grant”}“

soundcloud / oauth2 / token只返回401响应

Google oAuth2访问令牌:“ invalid_grant”

Google Oauth2:刷新OAuth2令牌时出错,消息:'{“ error”:“ invalid_grant”}'

如何使用Python获取oauth2 access_token

带有Google提供程序的HybridAuth进行身份验证时会随机返回“ invalid_request”

LinkedIn OAuth2 / oauth / v2 / accessToken响应未返回“ token_type”

错误:invalid_request缺少必需的参数:范围(带有Google OAuth2的Restify和Passportjs)

尝试为Box API使用oAuth2时出现invalid_grant错误

Discord OAuth2返回'{“ error”:“ access_denied”}'

如何使用cURL和PHP使用Oauth2

使用ASP.NET Core中的Azure Active Directory B2C在Web API中测试云身份验证-返回错误“ invalid_request”

Google OAuth2:错误401-invalid_client

Microsoft Azure-OAuth2-“ invalid_request”

Google附近的地方Api正在返回INVALID_REQUEST

Firebase身份验证Google提供程序invalid_request

Rails-在多个模型上使用omniauth时,Google oauth2 request.env ['omniauth.auth']为零

Google Places附近的API成功200,但在Laravel中返回“ INVALID_REQUEST”

使用oAuth2时缺少Google表格api密钥

使用LWP :: Authen :: OAuth2访问受OAuth2保护的Google API时出现问题

PHP:Google plus Oauth 2.0-获取OAuth2访问令牌时出错,消息:“ invalid_client”

Google oauth2不返回id_token

Oauth2 YouTube“错误”:“ invalid_request”

使用Google API刷新令牌并返回invalid_request

为什么Google OAuth2 Playground无法返回数据?

Google Places API返回INVALID_REQUEST(Android)

使用Spring Security的OAuth2提供程序在json中返回访问令牌;需要获取XML格式的令牌

PHP oauth2如何使用refresh_token

TOP 榜单

热门标签

归档