2017-01-20 4 views
3

Разница между интерактивными неинтерактивными режимами, установленными в documentationchrome.identity.getAuthToken(), не так понятна даже после повторных чтений.В чем разница между интерактивными и неинтерактивными режимами chrome.identity.getAuthToken()?

Для хорошего пользовательского опыта важно интерактивный маркер просит инициируются UI в вашем приложении объяснить, что разрешение является для. В противном случае ваши пользователи получат авторизацию запросов или экранов Chrome, если они не вошли в систему, с без контекста. В частности, не используйте getAuthToken интерактивно , когда ваше приложение запускается впервые.

и

Получение маркера может потребоваться пользователю зарегистрироваться в Chrome, или одобрить запрошенных областей приложения. Если интерактивный флаг имеет значение true, getAuthToken запросит пользователя при необходимости. Когда флаг имеет значение или опущен, getAuthToken будет возвращать сбой в любое время, когда будет запрашиваться .

  1. Как инициировать запрос интерактивного токена в интерфейсе (что объясняет причину для авторизации) в моем приложении? Как будет выглядеть getAuthToken(), если он был вызван из пользовательского интерфейса?
  2. «Не используйте getAuthToken в интерактивном режиме, когда ваше приложение запускается впервые» - для чего это предостережение?
  3. Как интерактивные & неинтерактивные режимы отличаются?
  4. «Когда флаг ошибочен или пропущен, getAuthToken будет возвращать сбой в любое время, когда потребуется запрос» - откуда я могу узнать, требуется ли приглашение или нет?
+0

Дополнительная информация [здесь] (https://developer.chrome.com/extensions/app_identity). Может быть, это немного яснее. –

ответ

2

Ответы на вопросы:

  1. Например, есть кнопка HTML в приложение для подключения к API:

myApp.html

<button id="connectMe">Connect to the API</button> 
<script src="myApp.js"></script> 

MYAPP .js

document.getElementById("connectMe").onclick = function(){ 
    chrome.identity.getAuthToken({interactive:true},function(token){ 
     if (token) // you have received authorization ... 
    }); 
}; 
  1. Предотвращает предоставление пользователям вашего приложения экрана запроса авторизации, не зная, для чего требуется авторизация, или почему для этого требуется ваше приложение. Вот почему они рекомендуют использовать явный элемент пользовательского интерфейса (например, кнопку в ответе 1).

  2. В интерактивном режиме пользователю будет предоставлен экран авторизации, если требуется авторизация (см. here). В неинтерактивном режиме, если требуется авторизация, вызов метода getAuthToken приведет к ошибке.

  3. Запрос требуется, если пользователь не подписан в Chrome или когда запрашиваемая область не была предварительно разрешена.

В моей (очень ограниченный) опыт, я использую {interactive:true} каждый раз: первый раз, когда он используется, пользователю предоставляется экран авторизации. Последующие запросы автоматически обрабатываются API-интерфейсом идентификации (если мои запросы возвращают ошибку 401 Error Invalid Token, я использую тот же метод getAuthToken, и он автоматически извлекает новый токен).