【问题标题】:What's the difference between chrome.identity.getAuthToken() interactive vs. non-interactive modes?chrome.identity.getAuthToken() 交互模式与非交互模式有什么区别?
【发布时间】:2017-06-05 04:24:40
【问题描述】:
chrome.identity.getAuthToken() 的documentation 中的交互式和非交互式模式之间的区别即使在反复阅读后对我来说也不是很清楚。
为了获得良好的用户体验,交互式令牌请求很重要
由您的应用程序中的 UI 启动,解释授权是什么
为了。不这样做将导致您的用户获得授权
请求,或 Chrome 登录屏幕(如果未登录),使用
没有上下文。特别是,不要以交互方式使用 getAuthToken
当您的应用首次启动时。
和
获取令牌可能需要用户登录 Chrome 或批准
应用程序请求的范围。如果交互式标志为真,
getAuthToken 将根据需要提示用户。当标志为假时
或省略,getAuthToken 将在提示时返回失败
是必需的。
- 如何在我的应用程序中通过 UI(解释授权原因)发起交互式令牌请求?
getAuthToken() 将如何理解它是否已从 UI 调用?
- “不要在您的应用首次启动时以交互方式使用
getAuthToken” - 此警告有什么用?
- 交互模式和非交互模式有何不同?
- “当标志为假或省略时,
getAuthToken 将在任何需要提示时返回失败”- 我如何知道是否需要提示?
【问题讨论】:
标签:
api
google-chrome
google-chrome-extension
【解决方案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 ...
});
};
这是为了防止您的应用程序的用户在不知道授权的用途或您的应用程序为什么需要授权的情况下看到授权请求屏幕。这就是为什么他们建议使用清晰的 UI 元素(如答案 1 中的按钮)。
在交互模式下,如果需要授权,用户将看到授权屏幕(请参阅here)。在非交互模式下,如果需要授权,调用getAuthToken方法会返回错误。
当用户未登录 Chrome 或请求的范围之前未获得授权时,需要提示。
在我(非常有限的)经验中,我每次都使用{interactive:true}:第一次使用时,会向用户显示授权屏幕。后续请求由身份 API 自动处理(如果我的请求返回 401 错误 Invalid Token,我使用相同的 getAuthToken 方法,它会自动获取新令牌)。