ইউজার ম্যানেজমেন্ট

গুগল অ্যানালিটিক্স ম্যানেজমেন্ট এপিআই ব্যবহারকারীর অনুমতিগুলির প্রোগ্রাম্যাটিক পরিচালনার অনুমতি দেয়। এটি বিশেষত বড় কোম্পানিগুলির জন্য তাদের অ্যাক্সেস কন্ট্রোল লিস্টে (ACLs) ঘন ঘন আপডেট সহ দরকারী।

ভূমিকা

তিনটি প্রধান সংস্থান রয়েছে যা নিয়ন্ত্রণ করতে ব্যবহার করা হয় কে একটি অ্যাকাউন্ট, সম্পত্তি বা দেখতে (প্রোফাইল) অ্যাক্সেস করতে পারে:

ব্যবহারকারীর অনুমতি লেখার ক্রিয়াকলাপের জন্য বিশেষ ব্যাচিং সমর্থনও রয়েছে।

ব্যবহারকারীর অনুমতি

একটি ব্যবহারকারী, একটি Google অ্যাকাউন্ট দ্বারা প্রতিনিধিত্ব করা হয়, একটি Google Analytics অ্যাকাউন্ট, সম্পত্তি বা ভিউ (প্রোফাইল) এ নিম্নলিখিত স্তরের অ্যাক্সেস মঞ্জুর করা যেতে পারে:

  • MANAGE_USERS - ব্যবহারকারীর অনুমতি API-তে লেখার অনুরোধ করার জন্য প্রয়োজন৷
  • EDIT - ডেটা ব্যবস্থাপনা সংস্থান সম্পাদনা করতে হবে।
  • COLLABORATE
  • READ_AND_ANALYZE

অ্যাক্সেসের প্রতিটি স্তরের অতিরিক্ত বিবরণের জন্য ব্যবহারকারীর অনুমতি সহায়তা কেন্দ্র নিবন্ধটি দেখুন।

অনুমতি বরাদ্দ করা

API দুই ধরনের অনুমতি প্রকাশ করে: local এবং effective । স্থানীয় অনুমতি প্রদত্ত অ্যাকাউন্ট, সম্পত্তি বা দর্শন (প্রোফাইল) প্রযোজ্য. API এর সাথে অনুমতি দেওয়ার সময় আপনাকে permissions.local প্রপার্টি ব্যবহার করতে হবে। Effective অনুমতিগুলি সেই অনুমতিগুলিকে প্রতিনিধিত্ব করে যা অভিভাবক সংস্থানগুলি থেকে উত্তরাধিকারসূত্রে প্রাপ্ত৷

উত্তরাধিকারসূত্রে প্রাপ্ত অনুমতি

যদি একজন ব্যবহারকারীকে একটি অ্যাকাউন্টে EDIT অনুমতি দেওয়া হয়, সেই অ্যাকাউন্টের অধীনে সমস্ত প্রোফাইল এবং বৈশিষ্ট্য এই অনুমতিগুলি উত্তরাধিকারী হবে; এটি permissions.effective সম্পত্তি দ্বারা প্রতিনিধিত্ব করা হবে।

ব্যবহারের ক্ষেত্রে

ম্যানেজমেন্ট এপিআই-এর ব্যবহারকারীর অনুমতিগুলি নিম্নলিখিত ব্যবহারের ক্ষেত্রে সমাধান করতে ব্যবহার করা যেতে পারে:

একটি অ্যাকাউন্টের জন্য সমস্ত ব্যবহারকারীদের তালিকা করুন

একটি অ্যাকাউন্টের জন্য সমস্ত ব্যবহারকারীদের তালিকাভুক্ত করতে, সেই সমস্ত ব্যবহারকারীদের সহ যাদের অ্যাকাউন্টের যেকোন সম্পত্তি বা ভিউ (প্রোফাইল) এর অনুমতি রয়েছে, অ্যাকাউন্ট ইউজারলিঙ্কস সংস্থানের list পদ্ধতিটি চালান।

বিপুল সংখ্যক ব্যবহারকারী আপডেট করুন

বিপুল সংখ্যক ব্যবহারকারীর অনুমতি আপডেট করার জন্য আপনাকে ব্যাচিং ব্যবহার করার পরামর্শ দেওয়া হয়; এটি শুধুমাত্র কোটা সংরক্ষণ করবে না বরং অনেক বেশি কার্যকরীও হবে -- সম্পূর্ণ বিশদ বিবরণের জন্য নীচের ব্যাচিং বিভাগটি দেখুন। একটি অ্যাকাউন্টের জন্য এটি সম্পাদন করার জন্য প্রয়োজনীয় পদক্ষেপগুলি হল:

  1. অ্যাকাউন্টের জন্য সমস্ত ব্যবহারকারীর লিঙ্ক পান :
    • সমস্ত accountUserLinks list
  2. উপযুক্ত অনুমতি সহ প্রতিটি ব্যবহারকারীর জন্য আপডেট অনুরোধগুলি তৈরি করুন :
    • প্রতিটি accountUserLink জন্য update
  3. উপরের আপডেট অনুরোধগুলি ধারণকারী প্রতি 300 জন ব্যবহারকারীর জন্য একটি একক ব্যাচ অনুরোধ তৈরি করুন:
    • প্রতি 300 জন ব্যবহারকারীর জন্য কল batch

অ্যাকাউন্টের অনুক্রম থেকে একজন ব্যবহারকারীকে মুছুন

অ্যাকাউন্টের শ্রেণিবিন্যাস (অর্থাৎ অ্যাকাউন্ট, বৈশিষ্ট্য এবং ভিউ (প্রোফাইল)) থেকে ব্যবহারকারীর সমস্ত ঘটনা মুছে ফেলার জন্য। এটি সম্পাদন করার জন্য প্রয়োজনীয় পদক্ষেপগুলি হল:

  1. প্রতিটি সত্তা স্তরের জন্য সমস্ত ব্যবহারকারীর লিঙ্ক পান। অ্যাকাউন্টের জন্য 3টি list অনুরোধ চালান:
    • সমস্ত accountUserLinks list
    • webpropertyId প্যারামিটার ~all এ সেট করে সমস্ত webpropertyUserLinks list
    • webpropertyId এবং profileId পরামিতি ~all এ সেট করে সমস্ত profileUserLinks list
  2. স্থানীয় অনুমতি সহ ব্যবহারকারীদের খুঁজুন এবং মুছুন। ধাপ 1-এ 3টি তালিকা ক্রিয়াকলাপ থেকে প্রাপ্ত প্রতিটি প্রতিক্রিয়ার জন্য, প্রতিটি সত্তার মাধ্যমে পুনরাবৃত্তি করুন entityUserLink :
    • যদি userRef বৈশিষ্ট্যগুলি ব্যবহারকারীর সাথে মেলে এবং যদি local অনুমতিগুলি সেট করা থাকে তবে সংস্থানে একটি delete ফেলুন

অ্যাকাউন্ট ইউজার লিংক, ওয়েব প্রপার্টি ইউজার লিংক এবং ভিউ (প্রোফাইল) ইউজার লিংক রিসোর্স delete পদ্ধতি সম্পর্কে বিস্তারিত জানার জন্য API রেফারেন্স দেখুন।

একটি একক ব্যবহারকারী আপডেট করুন

ম্যানেজমেন্ট এপিআই ব্যবহার করে ব্যবহারকারীর অনুমতিও আপডেট করা যেতে পারে। উদাহরণ স্বরূপ, ব্যবহারকারীর অনুমতির স্তর READ_AND_ANALYZE থেকে EDIT এ পরিবর্তন করার ধাপগুলি, ধরে নিলাম আপনি ভিউ (প্রোফাইল) নাম বা আইডি জানেন না, হল:

  1. প্রতিটি সত্তা স্তরের জন্য সমস্ত ব্যবহারকারীর লিঙ্ক পান অ্যাকাউন্টের জন্য 3 list অনুরোধগুলি সম্পাদন করুন:

    • সমস্ত accountUserLinks list
    • webpropertyId প্যারামিটার ~all এ সেট করে সমস্ত webpropertyUserLinks list
    • webpropertyId এবং profileId পরামিতি ~all এ সেট করে সমস্ত profileUserLinks list
  2. স্থানীয় অনুমতি সহ ব্যবহারকারীদের খুঁজুন এবং আপডেট করুন। ধাপ # 1 এ 3টি তালিকা অপারেশন থেকে প্রাপ্ত প্রতিটি প্রতিক্রিয়ার জন্য, প্রতিটি সত্তার মাধ্যমে পুনরাবৃত্তি করুন entityUserLink :

    • যদি userRef বৈশিষ্ট্যগুলি ব্যবহারকারীর সাথে মেলে এবং ব্যবহারকারীর যদি READ_AND_ANALYZE অ্যাক্সেস সহ local অনুমতি থাকে তবে সংস্থানটিতে একটি update চালান৷

অ্যাকাউন্ট ব্যবহারকারী লিঙ্ক, ওয়েব সম্পত্তি ব্যবহারকারী লিঙ্ক, এবং ব্যবহারকারী লিঙ্ক সংস্থান দেখুন (প্রোফাইল) update পদ্ধতির বিশদ বিবরণের জন্য API রেফারেন্স দেখুন।

একটি একক ব্যবহারকারী যোগ করুন

অ্যাকাউন্টের শ্রেণিবিন্যাসে একজন ব্যবহারকারীকে যুক্ত করতে, উদাহরণস্বরূপ একটি ভিউ (প্রোফাইল) এর জন্য নিম্নলিখিত পদক্ষেপগুলি প্রয়োজন:

  1. অ্যাকাউন্ট, সম্পত্তি এবং ভিউ (প্রোফাইল) এর জন্য আইডি পুনরুদ্ধার করতে ম্যানেজমেন্ট API বা ওয়েব ইন্টারফেস ব্যবহার করুন।
  2. profileUserLinks রিসোর্সের insert পদ্ধতি কার্যকর করে ব্যবহারকারীকে যুক্ত করুন।

ব্যাচিং

ব্যাচিং পারমিশন এপিআই লেখার (মুছুন, সন্নিবেশ, আপডেট) অনুরোধ করার সময় পারফরম্যান্স লাভ এবং কোটা ইনসেনটিভ রয়েছে।

  • ব্যাচড ব্যবহারকারীর অনুমতির অনুরোধগুলি ব্যাক এন্ড অপ্টিমাইজেশনের সুবিধা নিতে পারে এবং উল্লেখযোগ্য কর্মক্ষমতা লাভ দেখতে পারে।
  • প্রতি 30টি ব্যাচযুক্ত ব্যবহারকারীর অনুমতি API অনুরোধ শুধুমাত্র একটি একক লেখার অপারেশন হিসাবে গণনা করে৷
  • 300টি পর্যন্ত ব্যবহারকারীর অনুমতি API অনুরোধ একটি একক ব্যাচের অনুরোধে করা যেতে পারে, যা প্রতি-ব্যবহারকারী-সীমার QPS-এর জন্য অনুমতি দেয়।

এই পারফরম্যান্স লাভগুলি থেকে সর্বাধিক পাওয়ার জন্য আপনাকে কিছু জিনিস করতে হবে।

  • ব্যবহারকারীর দ্বারা আপনার API অনুরোধ গ্রুপ করুন।
  • শুধুমাত্র একটি অ্যাকাউন্টের জন্য ব্যাচ অনুরোধ. একাধিক Google Analytics অ্যাকাউন্টের সাথে ব্যাচড ব্যবহারকারীর অনুমতির অনুরোধের ফলে নিম্নলিখিত বার্তার সাথে একটি ত্রুটি দেখা দেবে: All batched requests must be under the same account

ত্রুটি পরিচালনা

একটি ব্যাচ অনুরোধে সমস্ত অনুমতি কল একটি একক লেনদেন হিসাবে বিবেচিত হয়। এর মানে হল যে কোনও মিউটেশন ত্রুটিপূর্ণ হলে, কোনও পরিবর্তন করা হয় না। যে কারণে আমরা তাদের একটি একক কল হিসাবে বিবেচনা করি তা হল:

  • একক ব্যবহারকারীর অনুমতি সামঞ্জস্য করতে একাধিক সম্পাদনার প্রয়োজন হতে পারে। যদি একটি সম্পাদনা ত্রুটিপূর্ণ হয়, তাহলে ব্যাচের কিছু অংশ কমিট করার ফলে ব্যবহারকারীর অনুমতিগুলি একটি অবাঞ্ছিত অবস্থায় শেষ হতে পারে৷
  • সম্পাদনাগুলিকে একটি একক লেনদেন হিসাবে বিবেচনা করে, আমরা ট্র্যাফিক অপ্টিমাইজ করি এবং কলের জন্য প্রয়োজনীয় কোটা কমাতে পারি৷

ব্যাচিং উদাহরণ - পাইথন

নীচে পাইথনে একটি সাধারণ উদাহরণ দেওয়া হল যে ভিউগুলির একটি সেটে (প্রোফাইল) ব্যবহারকারীদের তালিকা যুক্ত করার জন্য অনুরোধগুলি কীভাবে ব্যাচ করা যায়। উদাহরণটি অনুমোদিত ব্যবহারকারীর জন্য অ্যাকাউন্টগুলির মাধ্যমে লুপ করে এবং প্রতিটি অ্যাকাউন্টের জন্য একটি একক ব্যাচ অনুরোধ তৈরি করে। প্রতিটি ব্যাচের অনুরোধের মধ্যে এটি একটি প্রদত্ত ব্যবহারকারীর জন্য সমস্ত পরিবর্তনকে গোষ্ঠীভুক্ত করে।


"""A simple example of Google Analytics batched user permissions."""
import json
from googleapiclient.errors import HttpError
from googleapiclient.http import BatchHttpRequest

def call_back(request_id, response, exception):
  """Handle batched request responses."""
  print request_id
  if exception is not None:
    if isinstance(exception, HttpError):
      message = json.loads(exception.content)['error']['message']
      print ('Request %s returned API error : %s : %s ' %
             (request_id, exception.resp.status, message))
  else:
    print response


def add_users(users, permissions):
  """Adds users to every view (profile) with the given permissions.

  Args:
    users: A list of user email addresses.
    permissions: A list of user permissions.
  Note: this code assumes you have MANAGE_USERS level permissions
  to each profile and an authorized Google Analytics service object.
  """

  # Get the a full set of account summaries.
  account_summaries = analytics.management().accountSummaries().list().execute()

  # Loop through each account.
  for account in account_summaries.get('items', []):
    account_id = account.get('id')

    # Loop through each user.
    for user in users:
      # Create the BatchHttpRequest object.
      batch = BatchHttpRequest(callback=call_back)

      # Loop through each property.
      for property_summary in account.get('webProperties', []):
        property_id = property_summary.get('id')

        # Loop through each view (profile).
        for view in property_summary.get('profiles', []):
          view_id = view.get('id')

          # Construct the Profile User Link.
          link = analytics.management().profileUserLinks().insert(
              accountId=account_id,
              webPropertyId=property_id,
              profileId=view_id,
              body={
                  'permissions': {
                      'local': permissions
                  },
                  'userRef': {
                      'email': user
                  }
              }
          )
          batch.add(link)

      # Execute the batch request for each user.
      batch.execute()

if __name__ == '__main__':

  # Construct a list of users.
  emails = ['ona@gmail.com', 'emi@gmail.com', 'sue@gmail.com', 'liz@gmail.com']

  # call the add_users function with the list of desired permissions.
  add_users(emails, ['READ_AND_ANALYZE'])

পরবর্তী পদক্ষেপ

পরবর্তীতে আমরা বিভিন্ন ডেটা রিসোর্স কনফিগার করতে কিভাবে Google Analytics ম্যানেজমেন্ট API ব্যবহার করতে হয় তা পরীক্ষা করব।