0

我的要求是,我需要添加一个新的电子邮件ID到现有的谷歌分析帐户的财产。如何将新用户链接到谷歌分析财产/视图使用javascript

function insertPropertyUserLink() { 
 
    var request = gapi.client.analytics.management.webpropertyUserLinks.insert(
 
    { 
 
     'accountId': '123456', 
 
     'webPropertyId': 'UA-123456-1', 
 
     'resource': { 
 
     'permissions': { 
 
      'local': [ 
 
      'EDIT', 
 
      'MANAGE_USERS' 
 
      ] 
 
     }, 
 
     'userRef': { 
 
      'email': '[email protected]' 
 
     } 
 
     } 
 
    }); 
 
    request.execute(function (response) { // Handle the response. }); 
 
}

上面的代码,我从谷歌的文档了,我用下面的代码进行授权:

<script> 
 
    var GoogleAuth; 
 
    var SCOPE = 'https://www.googleapis.com/auth/analytics.manage.users'; 
 
    function handleClientLoad() { 
 
     // Load the API's client and auth2 modules. 
 
     // Call the initClient function after the modules load. 
 
     gapi.load('client:auth2', initClient); 
 
    } 
 

 
    function initClient() { 
 
     // Retrieve the discovery document for version 3 of Google Drive API. 
 
     // In practice, your app can retrieve one or more discovery documents. 
 
     var discoveryUrl = 'https://www.googleapis.com/analytics/v3/management/accounts/'; 
 

 
     // Initialize the gapi.client object, which app uses to make API requests. 
 
     // Get API key and client ID from API Console. 
 
     // 'scope' field specifies space-delimited list of access scopes. 
 
     gapi.client.init({ 
 
      'apiKey': 'mykey', 
 
      'discoveryDocs': [discoveryUrl], 
 
      'clientId': 'myclientId', 
 
      'scope': SCOPE 
 
     }).then(function() { 
 
      GoogleAuth = gapi.auth2.getAuthInstance(); 
 

 
      // Listen for sign-in state changes. 
 
      GoogleAuth.isSignedIn.listen(updateSigninStatus); 
 

 
      // Handle initial sign-in state. (Determine if user is already signed in.) 
 
      var user = GoogleAuth.currentUser.get(); 
 
      setSigninStatus(); 
 

 
      // Call handleAuthClick function when user clicks on 
 
      //  "Sign In/Authorize" button. 
 
      $('#sign-in-or-out-button').click(function() { 
 
       handleAuthClick(); 
 
      }); 
 
      $('#revoke-access-button').click(function() { 
 
       revokeAccess(); 
 
      }); 
 
     }); 
 
    } 
 

 
    function handleAuthClick() { 
 
     if (GoogleAuth.isSignedIn.get()) { 
 
      // User is authorized and has clicked 'Sign out' button. 
 
      GoogleAuth.signOut(); 
 
     } else { 
 
      // User is not signed in. Start Google auth flow. 
 
      GoogleAuth.signIn(); 
 
     } 
 
    } 
 

 
    function revokeAccess() { 
 
     GoogleAuth.disconnect(); 
 
    } 
 

 
    function setSigninStatus(isSignedIn) { 
 
     var user = GoogleAuth.currentUser.get(); 
 
     var isAuthorized = user.hasGrantedScopes(SCOPE); 
 
     if (isAuthorized) { 
 
      $('#sign-in-or-out-button').html('Sign out'); 
 
      $('#revoke-access-button').css('display', 'inline-block'); 
 
      $('#auth-status').html('You are currently signed in and have granted ' + 
 
       'access to this app.'); 
 
     } else { 
 
      $('#sign-in-or-out-button').html('Sign In/Authorize'); 
 
      $('#revoke-access-button').css('display', 'none'); 
 
      $('#auth-status').html('You have not authorized this app or you are ' + 
 
       'signed out.'); 
 
     } 
 
    } 
 

 
    function updateSigninStatus(isSignedIn) { 
 
     setSigninStatus(); 
 
    } 
 
</script> 
 

 
<button id="sign-in-or-out-button" 
 
     style="margin-left: 25px"> 
 
    Sign In/Authorize 
 
</button> 
 
<button id="revoke-access-button" 
 
     style="display: none; margin-left: 25px"> 
 
    Revoke access 
 
</button> 
 

 
<div id="auth-status" style="display: inline; padding-left: 25px"></div><hr> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
<script async defer src="https://apis.google.com/js/api.js" 
 
     onload="this.onload=function(){};handleClientLoad()" 
 
     onreadystatechange="if (this.readyState === 'complete') this.onload()"> 
 
</script>

我已经改变了API密钥和我的客户端ID,并在控制台中为应用启用了Analytics API。任何人都可以帮助我将上述两个代码片段集成到一个代码片段中,并且可以将新用户添加到分析属性中。

+0

你的代码有什么问题,因为它是? – DaImTo

+0

实际上,我将第一个代码片段添加到'setSigninStatus'函数的'if(isAuthorized)'部分,它显示错误** gapi.client.analytics未定义。** – Alex

+0

相关建议,您应该强烈考虑使用用于将用户添加到属性的[批处理方法](https://developers.google.com/analytics/devguides/config/mgmt/v3/user-management#batching)。当[批处理](https://developers.google.com/analytics/devguides/config/mgmt/v3/batching)权限API写入(删除,插入,更新)请求时,会有性能提升和配额激励。 – Matt

回答

0

要解决这个问题:**gapi.client.analytics is undefined**

变化:

`gapi.load(**'client:auth2'**, initClient);` 

gapi.load(**'client:analytics'**, initClient); 

它为我工作。