Google API — нет refresh_token

У меня проблема с refresh_token. Я не понимаю это вообще. Я прочитал, что я получаю этот токен только первый раз после входа в систему, после чего refresh_token не будет возвращен. Первый метод — это инициализация гэпи:

initGp: function() {

requirejs(['google'],
function   (gapi) {

gapi.load('auth2', function() {
this.auth2 = gapi.auth2.init({
client_id: 'client_id',
scope: 'https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/youtube.upload https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'
});
}.bind(this));
}.bind(this));
},

Затем, когда пользователь нажимает кнопку «Подключиться к YouTube», код ответа отправляется на маршрут «/ connect-google»:

connectGp: function() {

var self = this;

this.auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(

function(response) {
$('.gp-button').addClass('loading');
var vars = {
code: response.code
};
$.ajax({
url: myUrl+"/connect-google",
data: vars,
type: "GET",
success: function(response) {
window.location.reload();
}
});
});
},

тогда в PHP я получил:

$googleClient = new \Google_Client();
$googleClient->setClientId($client_id);
$googleClient->setClientSecret($client_secret);
$googleClient->setRedirectUri('postmessage');
$googleClient->setAccessType("offline");
$googleClient->setScopes($scopes);$token = $googleClient->authenticate($code);
$access_token = $googleClient->getAccessToken();
var_dump($access_token);

но в access_token я не получаю refresh_token. Зачем ? это потому что я использую ‘postmessage’?

3

Решение

Вы можете попробовать это и каждый раз получать refresh_token.

$googleClient->setApprovalPrompt('force');

Затем, как только вы закончите сборку приложения, вы можете удалить эту строку. Надеюсь, поможет.

1

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

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

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