Я делаю расширение Chrome для Календаря Google, где мне нужно пройти аутентификацию на сервере Google Cloud Endpoints. Я использую библиотеку Google APIs для клиента JavaScript для этого, с помощью метода gapi.auth.authorize
:Запуск всплывающего окна gapi автоматически закрывается и с ошибкой 401
var SCOPES = [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/calendar.readonly"
];
function login() {
gapi.client.oauth2.userinfo.get().execute(function(response) {
if (response.code) {
console.log("cannot auth: " + response.code + " (" + response.message + ")");
} else {
console.log("authed " + response.email);
}
});
}
gapi.auth.authorize({
client_id: CLIENT_ID,
scope: SCOPES.join(" "),
immediate: immediate
}, login);
Теперь иногда это работает, иногда это не делает. В этом случае появляется всплывающее окно и немедленно закрываются, и response
объекта содержит:
{
"code": 401,
"message": "Invalid Credentials",
"data": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"error": {
"code": 401,
"message": "Invalid Credentials",
"data": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
]
}
}
Я не могу за жизнь мне найти источник ошибки, либо почему это происходит только иногда. Обратите внимание, что другой webapp использует тот же самый код (включая идентификатор клиента) и работает безупречно.
для расширения хрома вы должны смотреть на https://developer.chrome.com/apps/identity – pinoyyid
я не могу использовать 'chrome.identity', так как мне нужно разделить маркер между расширением и webapp и 'chrome.identity' требует другого типа идентификатора клиента. – Iso
Я видел старые комментарии, которые не поддерживаются в Chrome Extensions. По крайней мере, это краевой пример для тестирования. Возможно, вы захотите пересмотреть. У меня есть приложение, которое с радостью использует chrome.identity в расширении, которое делится с gapi в веб-приложении, и у меня нет проблем с совместным использованием. – pinoyyid