2013-11-13 3 views
0

Я использую oauth2-php library hosted on Google code. Я запутался в the example code и, в частности, как перейти с страницы addClient.php на страницу authorize.php.oauth2-php library client authorize

В настоящее время я ввожу несколько учетных данных в <form> на странице addClient.php, которые являются корректными INSERT ed в мою базу данных. К сожалению, когда я указываю браузер к authorize.php странице я получаю следующее сообщение об ошибке:

{"error":"invalid_client"} 

Может кто-то помочь мне понять, почему authorize.php не тянет мои данные клиента из базы данных?

ответ

1

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

1) Создание клиента (предоставить идентификатор клиента, секрет клиента, перенаправлять URI):

/addclient.php 

2) Fetch Код авторизации от сервера авторизации:

/authorize.php?client_id=foo&response_type=code 

Это перенаправит вас на перенаправление URI, указанном в пункте 1 добавление code в качестве параметра GET.

3) Сделайте POST запрос, чтобы получить маркер доступа:

/token.php 

с почтовыми Params:

grant_type=code&client_id=foo&code=[AUTH_CODE_FROM_STEP_2]&client_secret=[SECRET]&redirect_‌​uri=[REDIRECT_URI_FROM_STEP_1] 

Это даст вам JSON с access_token в нем.

4) Fetch защищенного ресурса (oauth_token может передаваться и как GET или POST пар)

/protected_resource.php?oauth_token=[ACCESS_TOKEN_FROM_STEP_3] 

Кроме того, я не знаю, если вы имеете дело с некоторым унаследованным кодом, но это Lib устарела, поскольку он основан на 09 (черновом) варианте oauth 2. На официальной странице http://oauth.net/2/ реализованы версии, которые являются актуальными. Вы можете взглянуть на них.

+0

спасибо. Хм, 'authorize.php? Client_id = foo' по-прежнему дает' {"error": "invalid_client"} '. Думаю, мне нужно 'client_id' плюс другие параметры? Да, может быть, мне следует просто пойти с более новой реализацией. Хотя они выглядят заметно менее просто, что было моей первоначальной целью. Любое предпочтение одному другому? –

+0

Да, вам также нужен параметр 'response_type' (например,' = token'). Что касается новых библиотек oauth, все они покрыты тестами и хорошо выглядят, хотя мне нравится https://github.com/php-loep/oauth2-server больше всего - как организованы классы, выбранные интерфейсы и т. Д. (Это больше личного предпочтения, я думаю) –

+0

Спасибо. Хорошо, это работает, когда я делаю: 'authorize.php? Client_id = foo & response_type = токен'. Однако, когда я нажимаю «yep», я снова получаю 'invalid_client'. URL-адрес после отправки формы выглядит следующим образом: 'authorize.php? State = # access_token = 9459eb38ff686bdc92e579cebdb1f7d5 & expires_in = 3600 & scope ='. Добавление '& scope = public' в первую строку запроса authorize.php не предотвращает ошибку. Мысли? –

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