Серверная часть OAuth.io не обновляет токен Google

Во-первых, пожалуйста, не отмечайте это как дублированный, так как это относится к серверной части (PHP), а не к клиентской стороне, как другие посты.

Я пытаюсь обновить токен для Google API через Oauth.io. Я последовал за этот и много других постов, но не повезло. К сожалению, документация Oauth.io не самая лучшая. У меня нет этой проблемы с Twitter и Facebook только Google.

Я получаю refresh_token при первом подключении. Тогда мне нужно делать вызов API один раз в день.

{
"access_token":"xxx",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"xxx",
"id_token":"xxx",
"provider":"google_analytics"}

Вопрос в том, как обновить токен Google через Oauth.io?

документация говорит:

// Метод auth автоматически обновляет токены при необходимости
$ request_object = $ oauth-> auth (‘facebook’, массив (
‘credentials’ => $ credentials
));

и очки Вот, но это не решает проблему. Все, что он делает, это то, что я получаю значение refresh_token в ответ.

ОБНОВИТЬ

В соответствии с этот пост, который я пытался сделать:

$request_object->post('https://oauth.io/auth/access_token', array(
'code' => 'xxx', // here I tried access_token, refresh_token
'key' => 'xxx',
'secret' => 'xxx',
));

но все, что я получаю, это

array(4) {
'status' =>
string(5) "error"'code' =>
int(401)
'message' =>
string(70) "Bearer token invalid. Follow the oauth2-token link to get a valid one!"'data' =>
array(1) {
'code' =>
string(17) "UnauthorizedError"}
}

Еще ничего.

0

Решение

Наконец я нашел это. Вы можете обновить access_token, используя:

    $this->oauth = new OAuth();
$this->oauth->initialize($publicKey, $secretKey);
  1. $ refreshedCredentials = $ this-> oauth-> refreshCredentials ($ oldCredentials, true);

или же

  1. $request_object = $oauth->auth('google_analytics', array(
    'credentials' => $credentials,
    'force_refresh' => true
    ));

Оба ответа можно найти Вот. Я держал его перед собой весь день и не видел его.

Я предпочитаю использовать 1-е решение, так как хочу сохранить новый access_token, чтобы я мог использовать его позже. И вам нужно помнить, что вам нужно передать refresh_token, который вы получили с первым access_token, вместе с последним access_token, чтобы получить обновленный access_token — refresh_token не изменится, пока пользователь не отзовет доступ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]