我正在尝试使用OpenX 中的OAuth进行身份验证(网站在Chrome中效果不佳。请使用iexplore或safari。)
这是我的一段代码
# Login
$url = "https://sso.openx.com/api/index/token";
$post = http_build_query( array( 'Access Token URL' => 'https://sso.openx.com/api/index/token',
'Authorize URL' => 'https://sso.openx.com/login/login',
'callbackUrl' => 'oob',
'Consumer Key' => $key,
'Consumer Secret' => $secret,
'OAuth Realm' => $realm,
'Request Token URL' => 'https://sso.openx.com/api/index/initiate',
'Signature Method' => 'HMAC-SHA1 ',
'Version' => '1.0a ') );
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$json_response = curl_exec($curl);
var_dump($json_response);
curl_close($curl);
$authObj = json_decode($json_response);
而且,根据链接文档,我应该期待 oauth_token 和 oauth_verifier :
1.将callbackUrl设置为oob(带外),告诉OAuth服务器您没有重定向用户。 OAuth服务器返回请求令牌。
但我得到了:
HTTP / 1.1 400错误请求 - 无效请求:缺少参数
我在这里做了一件明显错误的事情,我错过了吗?我是否误解了链接文档中的内容?
欢迎任何形式的帮助,无论是针对问题本身还是针对问题的呈现方式;答案,提示,想法,更正等。
谢谢。
答案 0 :(得分:1)
我也在使用openx,这是我的代码。希望它可以帮助某人
$para = array (
'Access Token URL' => 'https://sso.openx.com/api/index/token',
'Authorize URL' => 'https://sso.openx.com/login/process',
'callbackUrl' => 'oob',
'Consumer Key' => $email,
'Consumer Secret' => $consumer_secret,
'OAuth Realm' => $sso_realm,
'Request Token URL' => 'https://sso.openx.com/api/index/initiate',
'Signature Method' => 'HMAC-SHA1',
'Version' => '1.0a'
);
$opt = array (
CURLOPT_URL => "https://sso.openx.com/login/process",
CURLOPT_COOKIEFILE => $cookieFile,
CURLOPT_COOKIEJAR => $cookieFile,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $para,
CURLOPT_VERBOSE => true,
CURLOPT_HEADER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => "{$authentication}",
CURLOPT_FOLLOWLOCATION => true
);
$c = curl_init();
curl_setopt_array($c, $opt);
$content = curl_exec($c);
$info = curl_getinfo($c);
$error = curl_error($c);
你需要" consumer_secret"和" sso_realm"来自openx的电子邮件发送给您。
答案 1 :(得分:0)
尝试传递像这样的参数
curl_setopt($ ch,CURLOPT_POSTFIELDS,http_build_query($ data));
其中$ data将包含$ data ='用户名='。$ username。'& password ='。$ password。'&#39 ;;
答案 2 :(得分:0)
" $ resource"来自??替换:
curl_setopt($resource, CURLOPT_POSTFIELDS, $post);
与
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
开始。