Как использовать django-rest-framework-social-oauth2 с facebook Oauth2?

Я прочитал документацию здесь: django-rest-framework-social-oauth2, но мне все очень непонятно (с этим работаю впервые).

и в конце он показывает некоторую конфигурацию того, как делать настройки для использования facebook Oauth2. И вот эта информация в документации:

Вы можете проверить эти настройки, выполнив следующую команду:

curl -X POST -d “grant_type=convert_token&client_id=<client_id>&client_secret=<client_secret>&backend=facebook&token=<facebook_token>”  http://localhost:8000/auth/convert-token

Этот запрос возвращает «access_token», который вы должны использовать во всех HTTP-запросах с DRF. Здесь происходит то, что мы конвертируем сторонний токен доступа (user_access_token) в токен доступа для использования с вашим API и его клиентами (access_token). Вы должны использовать этот токен при каждой последующей связи между вашей системой / приложением и вашим api, чтобы аутентифицировать каждый запрос и избегать аутентификации с помощью FB каждый раз.

Означает ли это, что с этой конечной точкой я смогу каким-то образом «переопределить» метод sing up, создающий пользователя в моем приложении с тем же user_access_token, который есть на facebook?

Если это правильно, насколько я понимаю. После получения ответа FB.getLoginStatus я смогу совершать звонки на моих собственных конечных точках API, относящихся к зарегистрированному пользователю с его facebook user_acess_token (это то же самое в моей системе).

Думаю, мне также нужно будет добавить токены социальных аккаунтов в пользовательские модели?

Я прав?


person Joab Mendes    schedule 02.05.2016    source источник


Ответы (1)


Я мог протестировать его с помощью тестового токена из facebook, и он ведет себя так, как я ожидал, как я написал в своем вопросе.

person Joab Mendes    schedule 05.05.2016
comment
Как вы получили токен доступа? Я предполагаю, что идентификатор cleint и секрет клиента - это то, что мы получаем от fb после регистрации нашего приложения. Пожалуйста помоги - person randomuser; 19.07.2016
comment
@AjaySingh, вы можете сделать запрос javascript, используя документацию facebook, и он даст у вас access_token для тестирования вашего бэкэнда. И да, client_secret и client_id - это те, которые вы получаете после регистрации своего приложения. - person Joab Mendes; 19.07.2016
comment
Я хотел использовать для этого django-rest-framework-social-oauth2, но он продолжает получать 404, поскольку у моего проекта нет маршрута к url ​​localhost: 8000 / auth / convert-token Нужно ли мне что-то добавить в свой urls.py? - person randomuser; 19.07.2016
comment
@AjaySingh ознакомится с их документацией по github. Я открыл там две проблемы с вопросами и как-то объяснил свою реализацию. Я не знаю, в чем ваш случай, но вот проблемы Проблема 1 и Проблема2 - person Joab Mendes; 19.07.2016
comment
@AjaySingh Я точно не знаю, как у вас дела, но вам нужно настроить некоторую конфигурацию. Кроме того, некоторые конечные точки отвечают 404, если вы не установите для них правильную загрузку. - person Joab Mendes; 19.07.2016
comment
Я использую те же настройки, что и github.com/PhilipGarnero/, а мой вызов curl - curl -X POST -d grant_type = convert_token & client_id = ‹client_id› & client_secret = ‹client_secret› & backend = facebook & token = ‹facebook_token› localhost: 8000 / auth / convert-token, который выбрасывает 404 - person randomuser; 19.07.2016
comment
@AjaySingh Задайте более подробный вопрос и отправьте мне ссылку. Я посмотрю, смогу ли я вам помочь, если вы покажете дополнительную информацию о своих настройках. Также опубликуйте полное сообщение об ошибке 404. - person Joab Mendes; 19.07.2016
comment
это все, что я сделал ... добавил настройки в свое приложение django и вызвал этот curl, но в результате получилось 404 - person randomuser; 19.07.2016
comment
Я решил эту проблему. Но теперь я получаю: {error: invalid_request, error_description: Invalid client_id parameter value.} Я скопировал свой идентификатор клиента только из консоли разработчика fb. Есть идеи, почему это происходит? - person randomuser; 20.07.2016
comment
@AjaySingh Эти параметры (client_id и client_secret) возвращаются из вашего приложения. В теме установка перейдите к шагу Now go to django admin and add a new Application. и ваш администратор вы определили эти переменные (client_id и secret). Скопируйте их и отправьте по вашему запросу. - person Joab Mendes; 23.07.2016
comment
@AjaySingh Вы также можете перезаписать эти конечные точки и получить эти идентификаторы из своего собственного кода. Если вы изучаете этот код, здесь вы увидите, что можете перезаписать конечную точку пакета. Это хорошо, потому что вы не будете запрашивать много информации из своего клиентского приложения. Извините, я слишком долго отвечал вам. Если у вас есть вопросы, напишите мне по электронной почте (адрес электронной почты в моем профиле) - person Joab Mendes; 23.07.2016
comment
Я уже интегрировал эту библиотеку. На данный момент он работает нормально. Спасибо за ответ. Обязательно пришлю вам письмо, если мне нужно его настроить. Спасибо :) - person randomuser; 25.07.2016
comment
Подождите, так что мы делаем запрос сообщений из нашего приложения с нашими client_id и client_secret? Так кто-нибудь может их увидеть? - person Paul Bénéteau; 19.01.2021