chrome.identity.getAuthToken()交互模式与非交互模式之间的区别是什么?

时间:2017-01-20 08:37:37

标签: api google-chrome google-chrome-extension

chrome.identity.getAuthToken()的{​​{3}}中存在的交互式非交互式模式之间的差异即使经过多次阅读也不是那么清楚。

  

为了获得良好的用户体验,重要的是交互式令牌请求   由您的应用中的UI启动,说明授权是什么   对于。如果不这样做,将导致您的用户获得授权   请求,或Chrome登录屏幕(如果他们未登录)   没有背景。特别是,不要以交互方式使用getAuthToken   当您的应用首次启动时。

  

获取令牌可能需要用户登录Chrome或批准   应用程序的请求范围。如果交互标志为真,   getAuthToken将根据需要提示用户。当标志为假时   或者省略,getAuthToken将在任何提示时返回失败   是必需的。

  1. 如何在我的应用中通过UI启动交互式令牌请求(解释授权原因)? getAuthToken()如何理解是否已从UI调用?
  2. "首次启动应用时,请勿以交互方式使用getAuthToken" - 这是什么意思?
  3. 互动&非交互模式有何不同?
  4. "当标志为false或省略时,getAuthToken将在需要提示时返回失败" - 我如何知道是否需要提示?

1 个答案:

答案 0 :(得分:2)

您的问题的答案:

  1. 例如,在您的应用中添加一个HTML按钮即可连接到API:
  2. 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. 这是为了防止您的应用用户看到授权请求屏幕,而无需他们知道授权的内容或您的应用需要它的原因。这就是他们推荐使用清晰的UI元素(如答案1中的按钮)的原因。

    2. 在交互模式下,如果需要授权,将向用户显示授权屏幕(请参阅here)。在非交互模式下,如果需要授权,调用getAuthToken方法将返回错误。

    3. 当用户未登录Chrome或未事先授权请求的范围时,需要提示。

    4. 在我(非常有限)的体验中,我每次都使用{interactive:true}:第一次使用时,会向用户显示授权屏幕。后续请求由身份API自动处理(如果我的请求返回401错误无效令牌,我使用相同的getAuthToken方法并自动获取新令牌。)