Пример клиента и сервера PHP OAuth 2.0 - PullRequest
24 голосов
/ 10 ноября 2011

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

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

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

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

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

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

Ответы [ 4 ]

43 голосов
/ 08 апреля 2013

Настройка поставщика 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 ([YOUR REDIRECT URI]) - это ваш URI перенаправления. Вы будете перенаправлены на это после выполнения шага авторизации
  • scope - это область вашего будущего токена

По завершении (обычно это кнопка отправки), ваш браузер будет перенаправлен на 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

5 голосов
/ 19 мая 2013

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

Отличное введение в oauth2: http://www.slideshare.net/aaronpk/an-introduction-to-oauth-2

Этот сайт oauth2.net / 2 / перечислить 3 oauthСервер находится на разных стадиях разработки.

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

4 голосов
/ 05 ноября 2013

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

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

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

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

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

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

0 голосов
/ 26 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...