2017-01-23 35 views
0

我正在与Google Drive集成。我按照谷歌建议把登录按钮这样的路径:如何使用Google登录按钮设置授权范围

<div class="g-signin2" data-onsuccess="onSuccessFunc" data-theme="dark"></div> 

该类G-signin2的启用某些回调,但我找不到任何地方的文档。搜索毫无意义,因为有一百万个使用这个代码的例子。有人可以指出文档吗?

我的问题是我需要启用谷歌驱动器访问。这是在gapi.init中完成的,但是这个登录按钮正在执行init本身,如果我尝试这样做,它会抱怨init已经被调用。好的,但我需要指定认证范围以包含谷歌驱动器。

当我执行程序时,按下按钮提示允许配置文件访问,但不驱动器。

后来,我打电话给gapi.auth.authorize,它只是失败而没有提示用户。我已经看到g-signin2类与其他参数属性的其他用途,我怀疑这有一个属性,但我无法找到文档。不幸的是,Google教程没有引用关于字段及其含义的文档。

任何想法如何告诉登录按钮授权范围呈现给用户?

$scope.callAuthAuthorize = function() { 
    var authparam = { 
     'client_id': CLIENT_ID, 
     'scope': 'https://www.googleapis.com/auth/drive', 
     'immediate': true 
    }; 
    console.log("Now Requesting: ", authparam); 
    gapi.auth.authorize(authparam, $scope.handleAuthResult); 
} 
+0

将[此文档】(https://developers.google.com/identity/sign-in/web/incremental-auth )帮助 –

回答

0

尝试使用Google Drive API的JavaScript Quickstart tutorial。 这就是我用来创建从Google云端硬盘读取文件的应用程序。

按照“步骤1:开启Drive API”中的步骤在您的Google Cloud帐户中启用凭据。

首先呼叫authorizeimmediate: true,然后切换到​​上错误:

gapi.auth.authorize(authparam, (auth_result)=> { 
    if (auth_result && !auth_result.error) 
     $scope.handleAuthResult(auth_result) 
    else { 
     authparam.immediate = false; 
     gapi.auth.authorize(authparam, (auth_result)=> { 
      if (auth_result && !auth_result.error) 
       $scope.handleAuthResult(auth_result) 
      else 
       console.error(auth_result) 
     }) 
    } 
}) 
+0

是的,我已经做到了。问题是客户端API是自动初始化的,并且没有关于它的文档。我把这个例子中的所有代码都以相同的方式编码,但是调用'gapi.auth.authorize'只是失败。 (并通过这种方式报告非常好的错误信息)。所以我确切知道它有什么不对。但我找不到如何将登录按钮配置为ASK以获得正确的权限。 – AgilePro

+0

您应该在'gapi.auth.authorize'调用中传递'{scope:'https://www.googleapis.com/auth/drive'}'以及'client_id'。我将它调用两次,第一次使用'immediate:true',然后在失败时使用'immediate:false'尝试。 – MattMS

+0

我已经在顶端文章中包含授权代码。第二次调用除了立即变量外完全一样吗? – AgilePro