Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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 在第二次尝试中从oauth服务器获取授权代码时出现问题(我在第一次尝试中获取了身份验证代码以及访问令牌)_Php_Wordpress_Curl_Oauth_Single Sign On - Fatal编程技术网

Php 在第二次尝试中从oauth服务器获取授权代码时出现问题(我在第一次尝试中获取了身份验证代码以及访问令牌)

Php 在第二次尝试中从oauth服务器获取授权代码时出现问题(我在第一次尝试中获取了身份验证代码以及访问令牌),php,wordpress,curl,oauth,single-sign-on,Php,Wordpress,Curl,Oauth,Single Sign On,我的应用程序中有三个登录按钮。这些名称是使用服务器1登录、使用服务器2登录和使用服务器3登录。这里,serverone指的是wp oauth2服务器。类似地,还有另外两个服务器,例如oauth服务器2和ouath服务器3。现在,如果用户单击“使用服务器一号登录”按钮,他将使用第一台服务器登录应用程序。类似地,如果他单击第二个登录按钮,他将使用另一个oauth服务器2进行登录。第三个按钮具有类似的过程。现在,当我第一次尝试使用第一个按钮登录时,点击进入oauth服务器1,登录对话框打开,我使用用户

我的应用程序中有三个登录按钮。这些名称是使用服务器1登录、使用服务器2登录和使用服务器3登录。这里,serverone指的是wp oauth2服务器。类似地,还有另外两个服务器,例如oauth服务器2和ouath服务器3。现在,如果用户单击“使用服务器一号登录”按钮,他将使用第一台服务器登录应用程序。类似地,如果他单击第二个登录按钮,他将使用另一个oauth服务器2进行登录。第三个按钮具有类似的过程。现在,当我第一次尝试使用第一个按钮登录时,点击进入oauth服务器1,登录对话框打开,我使用用户名和密码登录。但是如果我注销并使用第二个按钮登录,点击就会转到oauth服务器2,我也会从那里登录。但现在的问题是,如果我第二次尝试使用相同的按钮登录,就会出现此错误

error=invalid_request
error_description=Invalid missing responsetype
我的终点是同伴

Http://server1.com/oauth/authoriz

Http://server1.com/oauth/token

代码是正确的,因为如果代码不正确,就不会进行第一次登录。我发现的问题是,当我第二次尝试使用同一台服务器(例如oauth服务器2)登录时,我没有在$\u GET['code']中获得授权代码。我已经检查了客户端id和客户端机密都是正确的,重定向Uri也是正确的。另外,我在每台服务器上创建了三个客户机,显然,我在为每个客户机使用不同的客户机id和密码

我正在从同一台服务器获取授权代码,例如OAuth 2,但为什么我在第二次尝试时没有从同一台服务器的URL获取$u GET['code']中的授权代码

这是浏览器缓存问题还是其他问题

我第一次得到授权码,但为什么第二次没有得到授权码

我也刷新了页面,在这之后,我再次尝试,但失败了

我遵循这个准则

Html代码如下

<form action="https://your-server.com/oauth/authorize?response_type=code&client_id={TestClient}&redirect_uri=
{https://redirect-uri.com/cb}" method="post">
<input type="submit" value="Log In" \>
</form>
[$client_id     = '123';
$client_secret = '123';

$curl_post_data = array(
   'grant_type'    => 'authorization_code',
   'code'          => $_GET['code'],
   'redirect_uri'  => 'http://oauth.dev',
   'client_id'     => $client_id, 
   'client_secret' => $client_secret
);

$curl = curl_init( $server_url . '/oauth/token/' );

// Uncomment if you want to use CLIENT ID AND SECRET IN THE HEADER
//curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
//curl_setopt($curl, CURLOPT_USERPWD, $client_id.':'.$client_secret); // Your credentials goes here
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $curl_post_data );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5' );
curl_setopt( $curl, CURLOPT_REFERER, 'http://www.example.com/1' );

$curl_response = curl_exec( $curl );
curl_close( $curl );
echo '<pre>';
print_r( $curl_response );
echo '</pre>';][1]
[$service_url = 'https://server.com/oauth/me?access_token=xxx';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // If the url has https and you don't want to verify source certificate

$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);

var_dump($response);][1]