0

Мое требование: мне нужно добавить новый идентификатор электронной почты к существующему свойству учетной записи google analytics.как связать нового пользователя с свойством google analytics/view с помощью 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. }); 
 
}

Приведенный выше код я получил от Google документации и я использую следующий код для авторизации:

<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 и client id с моим и включил API Google Analytics для приложения в консоли. Может ли кто-нибудь помочь мне интегрировать эти два фрагмента кода в один и может добавить нового пользователя в свойство analytics.

+0

Что не так с вашим кодом, как есть? – DaImTo

+0

Фактически, я добавил первый фрагмент кода в раздел 'if (isAuthorized)' функции 'setSigninStatus', он показывает ошибку ** gapi.client.analytics не определен. ** – Alex

+0

Похожий совет вам следует настоятельно рассмотреть возможность использования [пакетные методы] (https://developers.google.com/analytics/devguides/config/mgmt/v3/user-management#batching) для добавления пользователей в свойство. При использовании [batching] (https://developers.google.com/analytics/devguides/config/mgmt/v3/batching) прав доступа к производительности и стимулов квоты вы можете писать (удалять, вставлять, обновлять) запросы. – Matt

ответ

0

Чтобы решить эту проблему: **gapi.client.analytics is undefined**

Изменение:

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

в

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

Он работал для меня.

Смежные вопросы