Проблемы с авторизацией через Яндекс в HybridAuth
Добрый день!
У всех нормально работает авторизация через Яндекс в HybridAuth?
У меня с сегодняшнего дня (07.05.2020) начала вываливаться ошибка в логах:
PS Ну соответственно слетела авторизация через Яндекс на всех моих сайтах.
У всех нормально работает авторизация через Яндекс в HybridAuth?
У меня с сегодняшнего дня (07.05.2020) начала вываливаться ошибка в логах:
[HybridAuth] Provider returned an error: invalid_scope Не удалось определить список запрашиваемых доступовСоответственно Яндекс пишет:
Не удалось определить список запрашиваемых доступов (invalid_scope)Проблема, по всей видимости, с GET-параметром scope, сейчас в нем передаются пустые данные "scope=". В документации указано «Если параметры scope и optional_scope не переданы, то токен будет выдан с правами, указанными при регистрации приложения.». Проверил, права в приложении указаны, но авторизация не проходит. Если в GET-параметре вручную указать "scope=login:birthday login:email login:info login:avatar", то авторизация проходит норм.
PS Ну соответственно слетела авторизация через Яндекс на всех моих сайтах.
Комментарии: 3
Мне кажется, это у Яндекса что-то сломалось и scope стал обязательным.
Указываем его в настройках вот так:
Здесь уже починил.
Указываем его в настройках вот так:
{"keys":{"id":"айди","secret":"пароль"},"scope":"login:birthday login:email login:info"}
То есть, id с паролем переехали в массив keys, и добавился параметр scope, где указано нужное.Здесь уже починил.
Спасибо Василий.
PS Кстати, не успел внести у себя изменения, а авторизация заработала.
PS Кстати, не успел внести у себя изменения, а авторизация заработала.
Аривет.
А как правильно указать в этом файле
А как правильно указать в этом файле
<?php
/*!
* HybridAuth
* http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
* © 2009-2012, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
*
* Provider writed by xbreaker | https://github.com/xbreaker/hybridauth
*/
/**
* Hybrid_Providers_Yandex provider adapter based on OAuth2 protocol
*
*/
class Hybrid_Providers_Yandex extends Hybrid_Provider_Model_OAuth2
{
/**
* IDp wrappers initializer
*/
function initialize()
{
parent::initialize();
// Provider apis end-points
$this->api->api_base_url = "https://login.yandex.ru/info";
$this->api->authorize_url = "https://oauth.yandex.ru/authorize";
$this->api->token_url = "https://oauth.yandex.ru/token";
$this->api->sign_token_name = "oauth_token";
}
/**
* load the user profile from the IDp api client
*/
function getUserProfile()
{
$response = $this->api->api( "?format=json" );
if ( ! isset( $response->id ) ){
throw new Exception( "User profile request failed! {$this->providerId} returned an invalide response.", 6 );
}
$this->user->profile->identifier = (property_exists($response,'id'))?$response->id:"";
$this->user->profile->firstName = (property_exists($response,'real_name'))?$response->real_name:"";
$this->user->profile->lastName = (property_exists($response,'family_name'))?$response->family_name:"";
$this->user->profile->displayName = (property_exists($response,'display_name'))?$response->display_name:"";
$this->user->profile->photoURL = 'http://upics.yandex.net/'. $this->user->profile->identifier .'/normal';
$this->user->profile->profileURL = "";
$this->user->profile->gender = (property_exists($response,'sex'))?$response->sex:"";
$this->user->profile->email = (property_exists($response,'default_email'))?$response->default_email:"";
$this->user->profile->emailVerified = (property_exists($response,'default_email'))?$response->default_email:"";
if( property_exists($response,'birthday') ){
list($birthday_year, $birthday_month, $birthday_day) = explode( '-', $response->birthday );
$this->user->profile->birthDay = (int) $birthday_day;
$this->user->profile->birthMonth = (int) $birthday_month;
$this->user->profile->birthYear = (int) $birthday_year;
}
return $this->user->profile;
}
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.