ошибка при попытке получить токен доступа из stackexchange API 2.0, если пользователь не вошел в систему - PullRequest
2 голосов
/ 27 марта 2012

Вот моя проблема: я пытаюсь получить URL профиля текущего пользователя в stackoverflow с помощью API stackexchange 2.0.Если пользователь вошел в систему, то все работает нормально, поток OAuth дает мне токен доступа, и я могу получить любую информацию, какую захочу.Но если пользователь не вошел в систему, stackexchange просит пользователя войти в систему, используя любой из методов аутентификации (google, facebook, yahoo и т. Д.), Но после того, как пользователь входит в систему (скажем, с помощью Google), я получаю ответ:неправильный запрос.

Мой первый запрос кода авторизации выглядит следующим образом:

https://stackexchange.com/oauth?client_id=193&scope=read_inbox&redirect_uri=https%3a%2f%2fdioslaska.homelinux.org%2fcards%2fcard%2feditcards

, после этого он возвращается с кодом в URL, и я хочу обменятьсяэто с токеном доступа с запросом Post, подобным этому:

https://stackexchange.com/oauth/access_token?client_id=193&redirect_uri=https%3a%2f%2fdioslaska.homelinux.org%2fcards%2fcard%2feditcards&client_secret={my здесь секрет клиента} & code = tCEeEFp1UX2GYilnjR2GcA))

Ответ - ошибка 400 неверного запроса.Я посмотрел документацию по stackexchange api, и там сказано только, что это плохой параметр.Но я использую те же параметры, когда делаю это для пользователя, который уже вошел в систему, и он работает.

Я много искал, но не смог найти ничего похожего на эту проблему.Любая помощь будет принята с благодарностью !!

(я использую mvc 3 framework с visual studio 2010, если это полезно)

Ответы [ 2 ]

0 голосов
/ 01 июня 2014

Проверка заголовка Content-Type = application / x-www-form-urlencoded в окончательном запросе POST.

Это требуется согласно документации.

0 голосов
/ 10 августа 2013

После того, как вы получите КОД на одной из ваших страниц (URL, который вы указали для redirect_uri для запроса кода), создайте одну форму, как показано ниже

<?php
if(isset($_GET['code']))
{
?> 
<form method="POST" action="https://stackexchange.com/oauth/access_token" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="client_secret" value="asdhfbakjhsdfbjsd" />
    <input type="hidden" name="code" value="<?php echo $_GET['code'];?>" />
    <input type="hidden" name="client_id" value="1234" />
    <input type="hidden" name="redirect_uri" value="http%3A%2F%2Fmysite.com%2Fmypage.php" />
    <input type="submit" name="submit" value="stack" />
</form>
<?php
}
?>

вы получите токен доступа на одной из страниц stackexchange, обратите внимание, что для получения ACCESS_TOKEN вы должны указать тот же redirect_uri, который вы использовали для запроса CODE.

...