Ответ 1
Хе Хоанг,
Библиотека oAuth не очень понятна. Вот как я работал:
Основы
- Прочитайте oAuth 2.0 draft 23, чтобы получить базовую идею oAuth, роли и потоки.
- Затем следуйте инструкциям по установке контроллера и библиотек из alexbilbie в вашей установке CodeIgniter.
- Установите таблицы и добавьте приложение и некоторые роли (подумайте о приложении Facebook и о ролях, для которых вы можете запросить разрешения)
- Убедитесь, что вы сделали свою функцию validate_user в файле oAuth_server.php, внизу где-то
Сделайте запрос
Теперь вы хотите выполнить запрос авторизации в качестве клиента. Эти несколько простых шагов описаны в в этом разделе.
Изменить: для автоматизации этого можно использовать библиотеку авторизации Philsturgeon oAuth 2.0. Описанный здесь ручной способ.
Для библиотеки это означает:
/index.php/oauth?client_id=IN_YOUR_APPLICATION&redirect_uri=IN_YOUR_APPLICATION&response_type=code&scope=YOUR_ROLE
Заполните переменные с данными, которые вы указали в базе данных.
Отладить часть ошибки, которую он может дать.
Если все пойдет хорошо, вы выполните следующее:
Войти → Авторизованное приложение → См. страницу redirect_uri с кодом: = XXXXXXX
Вам понадобится код XXXXXXX
Затем на redirect_uri сделайте сообщение в /index.php/oauth/access_token
С этими переменными (теперь вы все знаете)
- client_id (в таблице приложений)
- client_secret (в таблице приложений)
- redirect_uri (в таблице приложений: где вы хотите перейти для сохранения access_token)
- код (XXXXXX)
- grant_type (должно быть "authorization_code" ). Вы знаете это после прочтения этого раздела!
Этот пост возвращает строку JSON, содержащую access_token (или ошибку). ДА!
Что дальше
Сохраните access_token в вашем фактическом приложении и используйте его в запросах. На вашем сервере ресурсов (вероятно, API и тот же проект CodeIgniter, что и я, как только я объяснил сервер авторизации) вам нужно проверить valid_token перед возвратом результатов.
Это работает следующим образом:
$this->load->library('oauth_resource_server');
if (!$this->oauth_resource_server->has_scope(array('account.basic')))
{
// Error logic here - "access token does not have correct permission"
show_error('An access token is required to request this resource.');
}
else
{
//GO RETURN RESULTS
}
Надеюсь, что это заставило вас работать!
PS: вам нужно создать некоторую область администрирования для управления приложениями, сеансами и ролями.
Eric