2015-12-01 2 views
3

Аналогичный вопрос: this, за исключением того, что эти ответы устарели и не применимы к моей текущей ситуации.Google oAuth2 Токен доступа: «invalid_grant»

Вот мой WebAPP в зарегистрировался поток:

  • Вход с Google (силами стремительными, дает форум одобрения)
  • я успешно получить профиль обратно с маркером доступом и обновлением маркеров
  • я несколько бит и части, а затем использовать это обновления маркеров для создания маркера доступа и загрузить список контактов пользователя

Это работает нормально (последнее тестирование неделю назад), но сегодня это вдруг дает мне:

error: invalid_grant 

Я использую xoauth2 пакет узла, и это не был обновлен с июня, так что я не могу видеть почему это внезапно станет проблемой сейчас - разве Google не изменит что-то на их конце на прошлой неделе или около того?

Пример кода я использую, который вызывает ошибку:

// User credentials - all verified working + correct 
    xoauth2gen = xoauth2.createXOAuth2Generator({ 
     user: email, 
     clientId: configAuth.googleAuth.clientID, 
     clientSecret: configAuth.googleAuth.clientSecret, 
     refreshToken: refresh 
    }); 

    // SMTP/IMAP 
    xoauth2gen.getToken(function(err, token){ 
     if(err){ 
      return console.log("XOAUTH2 Error: " + err); 
     } 
     if(type === "full"){ 
     cb(token); 
     } 
    }); 

Edit: Для полноты прицелы я использую при создании маркеров обновлений являются:

app.get('/auth/google', 
    passport.authenticate('google', 
    { 
    scope : ['https://mail.google.com/', 
      'profile', 
      'email', 
      'https://www.googleapis.com/auth/userinfo.profile', 
      'https://www.google.com/m8/feeds'], 
      accessType: 'offline', 
      approvalPrompt: 'force' 
    } 
)); 
+0

Мне пришлось переделать [эти шаги] (http://masashi-k.blogspot.com.br/2013/06/sending-mail-with-gmail-using-xoauth2.html), чтобы пройти. –

ответ

0

В конечном итоге это было исправлено путем деаурации моего приложения в моей учетной записи Gmail, удалив токен обновления, который я сохранил в MongoDB и начинаю с нуля. Похоже, что это был просто случай с некоторыми разрешениями, которые я изменил, которые не были предоставлены через oAuth2.

2

Согласно в RFC 6749 invalid_grant возвращается, когда:

The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.

Проверить это here

+0

Хорошо, но, как упоминалось в вопросе, идентификатор и секрет клиента идентичны для генерации токена обновления, а также запроса токена доступа ... – Jascination

+0

Является ли ваш идентификатор и секрет вашего клиента одинаковым? Если да, то почему? Обычно они разные, не так ли? Какие области вы запрашиваете? –

+0

Области в OP. ID! == Секрет, но идентификатор и секрет, используемые для запроса токена доступа === секрет и идентификатор для первоначальной аутентификации. – Jascination