2013-08-27 3 views
1

Я пытаюсь реализовать oAuth с Reddit с помощью Devise & драгоценный камень omniauth-reddit.Неверный параметр redirect_uri для Reddit API

Похоже, что локальный адрес & api key fine.

https://ssl.reddit.com/api/v1/authorize?response_type=account&client_id=API_KEY&redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fusers%2Fauth%2Freddit%2Fcallback&scope=identity 

Однако ответ я получаю:

forbidden (reddit.com) 

you are not allowed to do that 
— invalid redirect_uri parameter. 

Я попытался установить redirect_uri к 127.0.0.1:3000, а также размещенных URL (Heroku), но безрезультатно.

Так что теперь я не понимаю, если я все еще просто даю им неправильный URL-адрес или передавая параметр, которого не должно быть.

Спасибо за помощь!

ответ

1

Серверы OAuth (почти всегда) требуют, чтобы вы зарегистрировали адрес обратного вызова с ними. Вы это сделали? Они проверяют, что то, что вы отправляете в redirect_uri, соответствует тому, что вы ввели. В Reddit:

Просто тестировал. Вы должны ввести точный URL обратного вызова:

http://127.0.0.1:3000/users/auth/reddit/callback

Если вы пропустите один сегмент, он сообщит, что ошибка.

+0

Конечно, как я указывал в вопросе, I've попытался установить redirect_uri как к http://127.0.0.1:3000 и http://projectx.com –

+0

К сожалению, не было Чисто. Вы пробовали с полным URL-адресом? конечная косая черта? Иногда серверы придирчивы к сравнению. –

+0

+1 за то, что сайт redirecr uri должен соответствовать тому, что отправляется. Я полностью отправил свой новый uri, но забыл обновить настройки на reddit. –

4

ОК. Так что я просто понял, раздражающего забавной странности с API Reddit:

Оказывается, она также возвращает ошибку — invalid redirect_uri parameter, если есть недопустимое client ID! Очевидно, я думал, что client_id было то же самое, как secret

NOPE

Вместо этого, идентификатор простой в промаха это прямо под вашим именем приложения. Когда вы используете правильный идентификатор, все работает. , ,

counter-intuitive

+0

Примечание. Если вы когда-либо использовали свой «секрет» в качестве идентификатора, ваш секрет больше не может быть секретным, и вы должны создать новый клиент OAuth2 для создания нового идентификатора и секретности. – kemitche

 Смежные вопросы

  • Нет связанных вопросов^_^