#php #google-api #google-oauth #google-developers-console #google-people-api
#php #google-api #google-oauth #google-developers-консоль #google-people-api
Вопрос:
Я получаю эту ошибку при попытке зарегистрироваться через Google api
строка (331) «Устаревший People API не использовался в проекте ******* раньше или он отключен. Включите его, посетив https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project =******** затем повторите попытку. Если вы недавно включили этот API, подождите несколько минут, пока действие распространится на наши системы, и повторите попытку «.
И когда я перехожу по этому URL-адресу, я получаю
Не удалось загрузить. Произошла ошибка при загрузке /apis/api/legacypeople.googleapis.com/обзор?project=******amp;dcccrf=1. Попробуйте еще раз.
Мой google.php код в /vendor/league/oauth2-google/src/Provider является
<?php
namespace LeagueOAuth2ClientProvider;
use LeagueOAuth2ClientExceptionHostedDomainException;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;
use LeagueOAuth2ClientTokenAccessToken;
use LeagueOAuth2ClientToolBearerAuthorizationTrait;
use PsrHttpMessageResponseInterface;
class Google extends AbstractProvider
{
use BearerAuthorizationTrait;
const ACCESS_TOKEN_RESOURCE_OWNER_ID = 'id';
/**
* @var string If set, this will be sent to google as the "access_type" parameter.
* @link https://developers.google.com/accounts/docs/OAuth2WebServer#offline
*/
protected $accessType;
/**
* @var string If set, this will be sent to google as the "hd" parameter.
* @link https://developers.google.com/accounts/docs/OAuth2Login#hd-param
*/
protected $hostedDomain;
/**
* @var array Default fields to be requested from the user profile.
* @link https://developers.google.com/ /web/api/rest/latest/people
*/
protected $defaultUserFields = [
'id',
'name(familyName,givenName)',
'displayName',
'emails/value',
'image/url',
];
/**
* @var array Additional fields to be requested from the user profile.
* If set, these values will be included with the defaults.
*/
protected $userFields = [];
/**
* Use OpenID Connect endpoints for getting the user info/resource owner
* @var bool
*/
protected $useOidcMode = false;
public function getBaseAuthorizationUrl()
{
return 'https://accounts.google.com/o/oauth2/auth';
}
public function getBaseAccessTokenUrl(array $params)
{
return 'https://www.googleapis.com/oauth2/v4/token';
}
public function getResourceOwnerDetailsUrl(AccessToken $token)
{
if ($this->useOidcMode) {
// OIDC endpoints can be found https://accounts.google.com/.well-known/openid-configuration
return 'https://www.googleapis.com/oauth2/v3/userinfo';
}
// fields that are required based on other configuration options
$configurationUserFields = [];
if (isset($this->hostedDomain)) {
$configurationUserFields[] = 'domain';
}
$fields = array_merge($this->defaultUserFields, $this->userFields, $configurationUserFields);
return 'https://www.googleapis.com/plus/v1/people/me?' . http_build_query([
'fields' => implode(',', $fields),
'alt' => 'json',
]);
}
protected function getAuthorizationParameters(array $options)
{
$params = array_merge(
parent::getAuthorizationParameters($options),
array_filter([
'hd' => $this->hostedDomain,
'access_type' => $this->accessType,
// if the user is logged in with more than one account ask which one to use for the login!
'authuser' => '-1'
])
);
return $params;
}
protected function getDefaultScopes()
{
return [
'email',
'openid',
'profile',
];
}
protected function getScopeSeparator()
{
return ' ';
}
protected function checkResponse(ResponseInterface $response, $data)
{
if (!empty($data['error'])) {
$code = 0;
$error = $data['error'];
if (is_array($error)) {
$code = $error['code'];
$error = $error['message'];
}
throw new IdentityProviderException($error, $code, $data);
}
}
protected function createResourceOwner(array $response, AccessToken $token)
{
$user = new GoogleUser($response);
// Validate hosted domain incase the user edited the initial authorization code grant request
if ($this->hostedDomain === '*') {
if (empty($user->getHostedDomain())) {
throw HostedDomainException::notMatchingDomain($this->hostedDomain);
}
} elseif (!empty($this->hostedDomain) amp;amp; $this->hostedDomain !== $user->getHostedDomain()) {
throw HostedDomainException::notMatchingDomain($this->hostedDomain);
}
return $user;
}
}
Как исправить эту проблему?
Ответ №1:
Устаревший People API не использовался в project ******* раньше или он отключен. Включите его, посетив https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project =*********
Как указано в сообщении об ошибке, вы не включили people api в свой проект и, поскольку вы включили email
и profile
и пытаетесь запросить профилированные данные о пользователе.
return 'https://www.googleapis.com/plus/v1/people/me?' . http_build_query([
'fields' => implode(',', $fields),
'alt' => 'json',
Вам необходимо включить people api в нашем проекте, прежде чем вы сможете запрашивать данные. Нажмите на ссылку и следуйте инструкциям ниже.
Перейдите в консоль разработчика Google, щелкните библиотека слева. Затем найдите API, который вы хотите использовать, и нажмите кнопку включить
Подождите пару минут, затем снова запустите свой код. Тогда вы сможете отправлять запросы к people api.
return 'https://www.googleapis.com/plus/v1/people/me?' . http_build_query([
'fields' => implode(',', $fields),
'alt' => 'json',
Устаревшая конечная точка:
Я также рекомендую обновить вашу конечную точку до новой конечной точки people.get
https://people.googleapis.com/v1/people/me
Комментарии:
1. Я пытался, но нет api с именем OAuth2?
2. В нем не указано Oauth2, если вы прочитали сообщение об ошибке, в нем четко указано, что устаревший People API не использовался в проекте , в нем говорится people api
3. Он уже включен, но все равно появляется эта ошибка: (
4. тогда это неправильный проект. Он не включен, Google не стал бы вам лгать. Вам также следует рассмотреть возможность обновления до новой конечной точки, а не использования старой.