首页 > 解决方案 > gapi.auth2.getAuthInstance().currentUser.get().grant() 的结果是什么

问题描述

gapi.auth2.getAuthInstance().currentUser.get().grant()知道在 Google gapi javascript 库中调用方法的结果是什么吗?

我正在尝试使用 Google gapi.auth2 库来实现增量授权,但正在努力解决GoogleUser.grant(options)实际返回的方法。

文档是指signIn方法,它返回Promise<GoogleUser>. https://developers.google.com/identity/sign-in/web/reference#googleusergrantoptions

试图测试它,但结果似乎完全不同......

标签: javascriptgoogle-api-js-client

解决方案


没有结果。该grant()方法在某种程度上是该方法的别名signIn()。不同之处在于它被设计为请求额外的范围,正如文档所解释的那样。popup当使用选项的值时,这是完美的ux_mode

例如,一个用户已经可以使用基本范围访问您的应用程序,但是有一个按钮允许用户与驱动器交互。单击该按钮时,会发生以下情况:

  const user = googleAuth.currentUser.get();
  const scopes = user.getGrantedScopes().split(" ");
  if(!scopes.includes("https://www.googleapis.com/auth/drive")){
    user.grant({
      scope: "https://www.googleapis.com/auth/drive",
    }).then(()=>{
      console.log(user.getGrantedScopes());
      //do whatever you need to do in drive
    });
  }

我希望你能得到基本的想法。我不太擅长解释东西,但希望这可能会有所帮助。


推荐阅读