如何在PHP中使用oauth获取oauth_令牌

如何在PHP中使用oauth获取oauth_令牌,php,oauth,openx,Php,Oauth,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

我正在尝试在中使用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_令牌和oauth_验证器:

1.将callbackUrl设置为oob(带外),这会告诉OAuth服务器您没有重定向用户。OAuth服务器返回请求令牌

但我得到的是:

HTTP/1.1 400错误请求-无效请求:缺少参数

我是不是做了一些我错过的明显错误的事情?我是否误解了链接文档中的某些内容

任何形式的帮助都是受欢迎的,无论是针对问题本身还是针对问题的呈现方式;答案、提示、想法、更正等


谢谢。

尝试像这样传递参数

curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data))

其中,$data将有$data='username='.$username.&password='.$password'.'

美元资源从何而来??替换:

curl_setopt($resource, CURLOPT_POSTFIELDS, $post);


首先。

我也在使用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);
您需要openx人员发送给您的电子邮件中的“消费者秘密”和“sso领域”

$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);