如何在Google API中拥有多个客户端ID?

时间:2017-03-11 18:56:27

标签: javascript google-api google-drive-api google-oauth gmail-api

如何同时使用2个Google API? 我有两个客户端ID,但我似乎无法让我的脚本请求两个apis的许可。

我需要在Var Client ID或其他任何内容中更改以获得2个API同时工作?这就是我尝试过的:

 var CLIENT_ID = ['client ID 1', 'Client ID 2'] ;

 var CLIENT_ID = 'client ID 1', 'Client ID 2' ;

 var CLIENT_ID = 'client ID 1, Client ID 2' ;

此外,我还需要更改此功能:

function initClient() {
gapi.client.init({
discoveryDocs: DISCOVERY_DOCS,
clientId:CLIENT_ID,
scope: SCOPES

我正在尝试在同一个脚本中同时使用Drive API和Gmail API,这怎么可能?

1 个答案:

答案 0 :(得分:0)

要使用单个客户端ID呼叫多个Google API,只需添加应用所需的范围。

初始范围:

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' }); /** Base scope **/

请求其他范围:

var options = new gapi.auth2.SigninOptionsBuilder(
        {'scope': 'email https://www.googleapis.com/auth/drive'});

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });

正如document中所述,通常最佳做法是在需要访问时,而不是预先请求范围。例如,想要支持购买的应用不应在用户按下“购买”按钮之前请求Google电子钱包访问权限;见Incremental authorization。无需为应用程序创建多个clientID来访问多个Google API。

在您的情况下,一旦用户访问API的方法,您的初始范围将是两者之一,然后请求额外的范围。另外,请检查OAuth 2.0 Playground以查看范围的工作原理。