Подтвердить что ты не робот

Пример клиента и сервера OAuth 2.0 PHP

Я загрузил версию сервера (PDO), доступную для OAuth 2.0 здесь: http://code.google.com/p/oauth2-php/

Не уверен, что это лучшая реализация там честно.

Он настроен и в настоящее время возвращает ошибку JSON, указывающую, что он ждет, пока клиент передаст ему правильные аргументы.

Теперь он поставляется с папкой "lib" с клиентом .inc. Честно говоря, я не уверен, как его использовать, поскольку нет PHP-примера, который я нашел в архиве и не нашел ничего в Интернете. Я нашел пример для Drupal, используя эту библиотеку, но это беспорядок, поскольку они имеют свои собственные функции, связанные с Drupal, в качестве модуля.

Мне было интересно, удастся ли кому-либо воспользоваться этой клиентской библиотекой PHP, и если да, то может ли они поделиться примером, который соединяется, авторизуется и затем перенаправляет URL-адрес обратного вызова с сеансом, чтобы иметь возможность доступа к вызовам защищенной страницы /api

Я хотел попробовать API-интерфейс Facebook (opensource), но я нашел его очень обычным для Facebook и не был уверен, где я должен поместить URL-адрес на сервер OAuth 2.0, который я установил на своей собственной серверной машине.

4b9b3361

Ответ 1

Настройка поставщика OAuth2 довольно проста, как только вы знаете, как работает протокол. Это 2-х или 3-х шаговый процесс (в зависимости от вашей настройки и от того, получаете ли вы токены от имени пользователя или только от сервера).

Что вам понадобится:

  • Рабочий код для поставщика OAuth2.
  • Patience

Что вам нужно, чтобы выяснить, как сделать код:

  • Создать клиентский токен (общедоступный и закрытый токены)
  • Выясните, как названы конечные точки авторизации и токена (обычно /authorize и /token)
  • Выясните, как обрабатываются области действия.

Первым шагом для получения токена является вызов /authorize?response_type=code&client_id=[YOUR ID]&redirect_uri=[YOUR REDIRECT URI]&scope=[YOUR SCOPE], где:

  • clientid ([YOUR ID]) - ваш токен открытого доступа.
  • redirect_uri ([ВАШ REDIRECT URI]) - ваш URI перенаправления. Вы будете перенаправлены на это после завершения этапа авторизации. Область
  • - это область вашего будущего токена.

По завершении (обычно кнопка отправки) ваш браузер будет перенаправлен на URI, указанный с кодом в URL (code = blah). Сохраните это значение.

Когда у вас есть этот код, вызовите другую конечную точку: /token?client_id=[YOUR ID]&client_secret=[YOUR SECRET]&grant_type=authorization_code&scope=[YOUR SCOPE]&code=[YOUR CODE]&redirect_uri=[YOUR REDIRECT URI]

Параметры: - client_id - снова, ваш открытый ключ клиента - client_secret - ваш закрытый ключ (предполагается, что это вызов на стороне сервера) - scope - область для токена - ДОЛЖНА ОБРАТИТЬ ПЕРВЫЙ ВЫЗОВ - redirect_uri - редирект URI - ДОЛЖЕН СМАТЬ ПЕРВЫЙ ВЫЗОВ - код - полученный код

Если все будет в порядке, на экране появится объект JSON, содержащий информацию о токенах.

Что происходит в фоновом режиме

Шаг 1 (авторизация)

Когда вы подтверждаете форму, сервер создает временный токен (токен аутентификации, как они называются), который обычно имеет очень короткий срок службы (мой код oauth2 sp обычно устанавливает это на 60 секунд). Это время, когда ваш сервер должен перейти от получения кода к запуску шага 2. Это всего лишь система подтверждения, и его цель - также хранить информацию, предоставленную на шаге 1, чтобы предотвратить хиджры.

Шаг 2 (токен)

Здесь ваш токен доступа фактически создан. Много проверок, много вещей, но в конце концов, токен - это просто значение, которое связывает ваш client_id и ваш токен. Это все, что есть.

Бесстыдный плагин: если вы используете структуру Laravel, я построил именно это с нуля (вместо использования дрянного, недокументированного образца кода): http://bundles.laravel.com/bundle/oauth2-sp

Ответ 2

У PHP есть клиент PECL: http://www.php.net/manual/en/book.oauth.php

Nice intro on oauth2: http://www.slideshare.net/aaronpk/an-introduction-to-oauth-2

Этот сайт oauth2.net/2/ отображает 3 сервера oauth на разных этапах разработки.

Большие провайдеры (Facebook, Google, Yahoo, Twitter и т.д.) реализуют свой собственный вкус Oauth, и, кроме того, Oauth 2.0 все еще находится в редакции проекта, каждый поставщик следует за другой версией

Ответ 3

Я работаю над некоторым типом этого PHP-клиента, который делает следующее:

  • Слушайте сокет
  • Аутентификация → Запрос
  • Процесс аутентификации → Правила серверa >
  • Аутентификация → Ответ как результат
  • Продолжить запрос клиентской стороны на собранный ответ.

Короткий ответ: curl + JSON

Вся процедура проверки подлинности, запрошенная с помощью curl для моей серверной стороны script, которая принимает проверки подлинности, затем обрабатывает и сравнивает, а в конце echo "JSON Encoded" ответ содержит несколько переменных в эхо, возвращаемых в клиент.

После того, как ответ собрал переменные 'JSON Decode' как независимые var и теперь клиентская сторона script знать, что делать для этого клиента.

Затем дайте текущему аутентифицированному пользователю (заданному Сессиями) некоторые инструменты. Все работы выполняются в PHP Desktop, встроенном веб-сервере mongoose с поддержкой PHP и curl. На самом деле не нужно использовать какой-либо lib, поэтому PHP имеет собственную полную библиотеку. Используйте curl, JSON и серверный PHP, MySQL (условная проверка) достаточно для целей аутентификации.

Ответ 4

Я частично смущен вашим вопросом. Вы сказали, что "он настроен и в настоящее время возвращает ошибку JSON, указывающую, что он ждет, чтобы клиент передал ему правильные аргументы", и все же вы хотите пример того, что "подключается, авторизуется и затем перенаправляется на URL обратного вызова" "? Если у вас все работает, и вы ожидаете принятия запросов, вы можете просто использовать запрос jQuery Ajax (используя заголовок авторизации) для запроса. До тех пор, пока у вас есть соответствующие client_id и client_secret, они должны вернуть все, что у вас есть, ваш веб-API, настроенный для выгрузки.