2015-04-24 6 views
1

Я пытаюсь получить токен обновления. Я читал об этом в документах Google. Теперь я использую accesstype в автономном режиме, а также утверждение_prompt: «force» Но я не получаю обновленный токен в ответ. Я не понимаю, что я делаю неправильно.Google Oauth не получает токен обновления

У меня есть следующий HTML-код:

<input type="submit" class="btn btn-info" value="Google" onclick="authorizeWithGoogle()" /> 

кода Javascript:

var cid = 'XXXXX'; 
var apik = 'XXXXX'; 
var scopes = 'https://www.google.com/m8/feeds'; 

function authorizeWithGoogle() { 
    gapi.client.setApiKey(apik); 
    gapi.auth.authorize({ client_id: cid, scope: scopes, accesstype: "offline" ,approval_prompt: "force"}, handleAuthResult); 
} 

function handleAuthResult(authResult) { 
    delete authResult['g-oauth-window']; 
if (authResult && !authResult.error) { 
    console.log(JSON.stringify(authResult));  
} 
} 

Можете ли вы мне помочь.

+0

Проверьте это, может быть, это поможет http://stackoverflow.com/questions/8942340/get-refresh-token-google-api –

ответ

3

Вы не хотите запрашивать обновления токенов, так как это отрицает безопасность OAuth. Обновить токены следует только запрашивать/хранить на сервере. Возможно, вы захотите сделать шаг назад и проанализировать свое понимание OAuth, прежде чем продолжить. Пытаясь реализовать OAuth, не понимая, что это лаваш.

Для клиента браузера вам следует просто продолжать вызов gapi.auth.authorize, когда вам нужен новый токен доступа (например, каждый час). После первого вызова вы можете установить immediate=true, который будет подавлять любой пользовательский интерфейс.

+0

благодарим за ответ. Я снова прочитал и да, я должен получить токен обновления из запроса сервера. Извиняюсь. –

0

Во-первых, вы сделали опечатку, в ней отсутствует подчеркивание: это access_type, а не accesstype.

Затем, чтобы пройти access_type и approval_prompt, вам необходимо убедиться, что ваш тестовый пользователь удалил гранты для вашего приложения. Войдите в Google со своей тестовой учетной записью (а не с учетной записью приложения) и перейдите на страницу Account Permissions и удалите свое приложение из списка.

+0

, если я перейду на access_type, это дает мне ошибку. access_type ' оффлайн ' не разрешен для токена response_type –

+0

Вам необходимо передать 'access_type' и' appro__pr_size' в запросе кода авторизации, а не во время запроса на токен (т. е. когда 'response_type' является' code'). –

Смежные вопросы