【发布时间】:2016-09-02 14:42:34
【问题描述】:
我遇到了与此处所述相同的问题“POST using CURL in PHP gives invalid request Error。在看到该帖子之前,我的代码已经像接受的答案一样设置好了。
// 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 可能正在以某种方式被重用,但我运行 unset 只是为了确保问题仍然存在。这里证明当收到invalid_request 错误时,我确实有一个访问代码:
Array(
[state] => 57c8b107a5a021.27458568
[code] => 4/Q8bswW3yheJ6tLFQnTd-pkfG6zVdbMk9UehgroR7f60
)
总的来说,我是 OAuth 的新手,但整个星期都在处理它,所以变得非常熟悉,但希望有人比我知道的更多,可以帮助我解决这个问题。我想确保用户永远不会因为服务器端脚本中的一些会话细节而在登录时遇到问题。
注意:这是与Perry Butler's WP-OAuth plugin合作的
【问题讨论】:
标签: php wordpress curl oauth-2.0 google-api