Как получить oauth_token с oAuth в переполнении стека

Я пытаюсь аутентифицироваться с помощью OAuth в OpenX (сайт плохо рендерится в 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

Решение

Я тоже использую 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

Другие решения

Попробуйте передать параметры следующим образом

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

где $ data будет иметь $ data = ‘username =’. $ username. ‘&пароль =». $ пароль. »;

0

Откуда берется «$ resource» ?? Заменить:

curl_setopt($resource, CURLOPT_POSTFIELDS, $post);

с

curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

для начала.

0
По вопросам рекламы [email protected]