Что там с Oauth 2.0 ?
-
Добрый день, посетители форума. Недавно вышла заметка о том, что Freeland с недавнего времени использует Oauth 2.0. Правда в тех постам, где это было написано была ссылка только на сайт Oauth 2.0, а на документацию же ссылок не было. Непонятно, как можно интегрировать аккаунты Freeland с Oauth. Непонятно, как и где регистрировать приложение для работы с Oauth. Хотелось бы хотя увидеть документацию.
-
@zhenialeks Добрый день. Действительно документации пока толком нету и процесс еще налаживается (хотя технически работает). У нас уже есть ряд сервисов, которые используют oAuth фриленда и процесс регистрации ручной. Если вы хотите разегестрировать приложение, зарегестрируйтесь в личном кабинете (https://profile.mfcoin.net) и напишите мне (желательно в телегарам alex_mamchenkov):
- Имя/Email вашего аккаунта в личном кабинете (к нему будет делаться привязка приложения)
- Имя вашего приложения (или домен где оно будет находиться, для отображения пользователям при авторизации)
- Callback URL вашего приложения, куда редиректить пользователей после авторизации
Я вам выдам ClientId и ClientSecret который вы сможете использовать для авторизации и получение базовых данных о пользователе.
Пример класса User на PHP для работы с oAuth:
namespace App; use GuzzleHttp\Client as HttpClient; class User { protected $client = null; protected $config = []; public function __construct($config) { $this->config = array_merge($this->config, $config); $this->client = new HttpClient; } public function getToken($code) { $response = $this->client->post("{$this->config['oauth_url']}/oauth/token", [ 'form_params' => [ 'grant_type' => 'authorization_code', 'client_id' => $this->config['client_id'], 'client_secret' => $this->config['client_secret'], 'redirect_uri' => $this->config['redirect_url'], 'code' => $code ] ]); return $this->parseResponse($response); } public function getUserInfo($token) { $response = $this->client->get("{$this->config['oauth_url']}/api/user", [ 'headers' => [ 'Authorization' => "Bearer $token", 'Accept' => "application/json" ] ]); return $this->parseResponse($response); } public function oauthRedirect() { $query = http_build_query([ 'client_id' => $this->config['client_id'], 'redirect_url' => $this->config['redirect_url'], 'response_type' => 'code', 'scope' => '' ]); $this->redirect("{$this->config['oauth_url']}/oauth/authorize?$query"); } protected function parseResponse($response) { return json_decode((string) $response->getBody(), true); } public function redirect($url) { header("Location: $url"); } }
Параметры конфига:
- client_id - это ваш ClientId что я выдам
- client_secret - это ваш SecretKey что я выдам
- oauth_url - https://profile.mfcoin.net
- redirect_url - это Callback URL вашего приложения, что вы дадите мне при запросе на регистрацию приложения
Пример index.php вашего приложения для авторизации пользователя:
include('config.php'); use App\User; if (empty($_SESSION) || !isset($_SESSION['user'])) { $user = new User($config); $user->oauthRedirect(); exit(); } print "You are logged in!"; var_dump($_SESSION);
Пример callback.php прямую ссылку на который вы дадите мне как Callback URL:
use App\User; include('config.php'); $user = new User($config); $data = $user->getToken($_GET['code']); $_SESSION['user'] = $user->getUserInfo($data['access_token']); $user->redirect("index.php"); exit();
Если есть еще какие-то вопросы по этой теме - пишите мне.
-
@alex_mamchenkov Благодарю
-
тема будет использоваться для новых заявок
-
пример авторизации, исходник.
https://sagleft.github.io/Freeland-Auth/