تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يناقش هذا الدليل كيفية الوصول إلى Google Ads API باستخدام حسابات الخدمة.
حساب الخدمة هو حساب يخص تطبيقك بدلاً من مستخدم نهائي فردي. تتيح حسابات الخدمة التفاعلات بين الخادم والخادم بين تطبيق ويب وخدمة من Google.
يطلب تطبيقك من واجهات برمجة تطبيقات Google تنفيذ إجراءات بالنيابة عن حساب الخدمة، وبالتالي لا يشارك المستخدمون بشكل مباشر في هذه العملية.
تستخدم حسابات الخدمة مسار OAuth 2.0 الذي لا يتطلّب تفويضًا من المستخدم، بل يستخدم ملف مفتاح لا يمكن لتطبيقك وحده الوصول إليه.
يوفر استخدام حسابات الخدمة فائدتَين رئيسيتَين:
يتم منح الإذن بالوصول إلى Google API كخطوة إعداد، وبالتالي يتم تجنُّب التعقيدات المرتبطة بمسارات OAuth 2.0 الأخرى التي تتطلّب تفاعلات المستخدم.
نزِّل مفتاح حساب الخدمة بتنسيق JSON، واحتفظ بمعرّف حساب الخدمة وبريده الإلكتروني.
سجِّل الدخول إلى حسابك على "إعلانات Google" بصفتك مشرفًا. انتقِل إلى المشرف > الوصول والأمان.
انقر على الزر + ضمن علامة التبويب المستخدمون.
اكتب عنوان البريد الإلكتروني لحساب الخدمة في مربّع الإدخال البريد الإلكتروني. اختَر مستوى الوصول المناسب إلى الحساب وانقر على زر إضافة حساب. يُرجى العِلم أنّ مستويات الوصول "البريد الإلكتروني" و"المشرف" غير متاحة لحسابات الخدمة.
يتم منح حساب الخدمة إذن الوصول.
إعداد مكتبة البرامج
اختَر علامة التبويب التي تتوافق مع لغة البرمجة التي تستخدمها للحصول على تعليمات حول كيفية إعداد مكتبة برامج العميل.
Java
اضبط مسار JSON للمفتاح الخاص في الإعدادات. إذا كنت تستخدم ملف ads.properties، أضِف ما يلي:
في هذا الخيار، يمكنك انتحال شخصية مستخدم لديه إذن الوصول إلى حسابك على "إعلانات Google" باستخدام حساب الخدمة. لا تعمل هذه الطريقة إلا مع عملاء Google Workspace. يمكن لحساب الخدمة أن ينتحل هوية المستخدمين (عناوين البريد الإلكتروني) في Google Workspace نفسه فقط.
مستخدِم "إعلانات Google" لديه أذونات في حساب "إعلانات Google" الذي تريد الوصول إليه
إعداد إذن الوصول إلى حساب الخدمة
بما أنّ انتحال هوية المستخدم يتم التحكّم فيه على مستوى النطاق فقط، يتطلّب استخدام حسابات الخدمة ومسار التأكيد مع Google OAuth 2.0 أن يكون لديك نطاقك الخاص مسجَّلاً في Google Workspace. يمكن لتطبيقك ومستخدميه بعد ذلك انتحال هوية أي مستخدم في النطاق.
اضبط مسار JSON للمفتاح الخاص والبريد الإلكتروني الذي يتم انتحال هويته في الإعدادات.
إذا كنت تستخدم google-ads.yaml file أو سلسلة YAML أو dict، أضِف ما يلي:
بما أنّ حساب الخدمة يتضمّن إذن تفويض على مستوى النطاق لنطاق Google Workspace، من المهم حماية ملف المفتاح الذي يتيح لحساب الخدمة الوصول إلى خدمات Google المصرّح له باستخدامها. ويصدق ذلك بشكل خاص لأنّ حساب الخدمة هذا لديه القدرة على انتحال هوية أي مستخدم في النطاق.
من الممارسات الجيدة الأخرى السماح لحسابات الخدمة بالوصول إلى الحد الأدنى من مجموعة واجهات برمجة التطبيقات المطلوبة فقط. هذا إجراء وقائي للحدّ من كمية البيانات التي يمكن للمهاجم الوصول إليها في حال تعرّض ملف مفتاح حساب الخدمة للاختراق.
تاريخ التعديل الأخير: 2025-09-05 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-09-05 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eThis guide explains how to use service accounts for server-to-server interactions with the Google Ads API, enabling app access without direct user involvement.\u003c/p\u003e\n"],["\u003cp\u003eService accounts offer simplified authorization and the ability to impersonate other users, though impersonation is a legacy approach and discouraged for security reasons.\u003c/p\u003e\n"],["\u003cp\u003eTwo authorization methods are detailed: direct access, granting the service account permissions to your Google Ads account, and impersonation (for Google Workspace users only), allowing the service account to act on behalf of a specific user.\u003c/p\u003e\n"],["\u003cp\u003eConfiguration instructions are provided for various client libraries (Java, .NET, Python, PHP, Ruby, Perl) to set up service account authentication.\u003c/p\u003e\n"],["\u003cp\u003eSecurity concerns are highlighted, emphasizing the importance of protecting the service account key file and limiting API access to minimize potential risks.\u003c/p\u003e\n"]]],[],null,["# Service Accounts\n\nThis guide discusses how to access the Google Ads API with service accounts.\n\nA [service account](/identity/protocols/OAuth2#serviceaccount) is an account\nthat belongs to your app instead of to an individual end user. Service accounts\nenable server-to-server interactions between a web app and a Google service.\nYour app calls Google APIs on behalf of the service account, so users aren't\ndirectly involved.\n\nService accounts employ an OAuth 2.0 flow that doesn't require human\nauthorization, using instead a key file that only your app can access.\n\nUsing service accounts provides two key benefits:\n\n- Authorization for Google API access is done as a configuration step, thus\n avoiding the complications associated with other OAuth 2.0 flows that require\n user interactions.\n\n- The OAuth 2.0 assertion flow lets your app impersonate other users if\n necessary.\n\nThere are two ways to authorize with service accounts: directly or\nwith impersonation (not recommended).\n\n\\[Recommended\\] Authorization with direct account access\n--------------------------------------------------------\n\nIn this option, you give the service account direct access to your Google Ads\naccount.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n### Account access setup\n\n1. Start by [creating a service account and credentials](/workspace/guides/create-credentials#service-account).\n\n Download the service account key in JSON format and note the service account\n ID and email.\n2. Sign in to your Google Ads account as an administrator. Navigate to **Admin \\\u003e Access and security**.\n\n3. Click the **+** button under the **Users** tab.\n\n4. Type the service account email into the **Email** input box. Select the\n appropriate level of account access level and click the **Add account**\n button. Note that Email and Admin access levels are not supported for service\n accounts.\n\n5. The service account is granted access.\n\n### Client library configuration\n\nSelect the tab corresponding to your programming language for instructions on\nhow to configure your client library. \n\n### Java\n\nSet the private key JSON path in your configuration. If you're using an\n`ads.properties` file, add the following: \n\n api.googleads.serviceAccountSecretsPath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nSee the [configuration guide](/google-ads/api/docs/client-libs/java/config-file) for\nadditional details.\n\n### .NET\n\nConfigure the following keys in your `App.config / Web.config`. See the\n[configuration guide](/google-ads/api/docs/client-libs/dotnet/configuration) for\nadditional details. \n\n \u003cadd key=\"OAuth2Mode\" value=\"SERVICE_ACCOUNT\" /\u003e\n \u003cadd key=\"OAuth2SecretsJsonPath\" value=\"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\" /\u003e\n\n### Python\n\nSet the private key JSON path in your configuration. If you're using a\n`google-ads.yaml file`, YAML string, or `dict`, add the following: \n\n json_key_file_path: \u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\n### PHP\n\nConfigure the following keys in your `google_ads_php.ini`. See the\n[configuration guide](/google-ads/api/docs/client-libs/php/configuration) for additional\ndetails. \n\n ; For service account flow.\n jsonKeyFilePath = \"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\"\n scopes = \"https://www.googleapis.com/auth/adwords\"\n\n### Ruby\n\nConfigure the following keys in your [`google_ads_config.rb`](//github.com/googleads/google-ads-ruby/blob/HEAD/google_ads_config.rb#L29). \n\n c.keyfile = '\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e'\n\n### Perl\n\nSet the private key JSON path and delegate account ID in your\nconfiguration. If you're using a `googleads.properties` file, add the\nfollowing: \n\n jsonKeyFilePath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n\n\\[Not Recommended\\] Authorization using impersonation\n-----------------------------------------------------\n\n| **Caution:** This is a legacy approach that works only for Google Workspace users. Its use is highly discouraged; this documentation is maintained only for reference purposes. Newer users should use the [Authorization with direct account access](#direct) approach, which works for all users including Google Workspace users and is simpler to configure and use.\n\nIn this option, you impersonate a user who has access to your Google Ads account\nusing the service account. This approach works only for Google Workspace\ncustomers. A service account can only impersonate users (email addresses) in\nthe same [Google Workspace](//workspace.google.com/).\n\n### Prerequisites\n\n- A [Google Workspace domain](//workspace.google.com/) that you own such as\n `mydomain.com` or `mybusiness.com`\n\n- A Google Ads API developer token and optionally a test account\n\n- The [client library](/google-ads/api/docs/client-libs) for the language you're using\n\n- A Google API Console project that has been [configured for the\n Google Ads API](/google-ads/api/docs/oauth/cloud-project#enable_the_in_your_project)\n\n- A Google Ads user with permissions on the Google Ads account you want to access.\n\n### Service account access setup\n\nSince user impersonation is controlled only at the domain level, using service\naccounts and assertion flow with Google OAuth 2.0 requires you to have your own\ndomain registered with Google Workspace. Your app and its users can then\nimpersonate any user in the domain.\n\n1. Start by [creating a service account and credentials](/workspace/guides/create-credentials#service-account).\n\n Download the service account key in JSON format and note the service account\n ID.\n2. Share the service account ID and the Google Ads API scope\n (`https://www.googleapis.com/auth/adwords`) with your domain administrator.\n\n Request the domain administrator to delegate domain-wide authority to your\n service account.\n3. If you're the domain administrator, complete the [help center\n instructions](//support.google.com/a/answer/162106).\n\nYou can now use the service account to access your Google Ads account with the\nOAuth 2.0 assertion flow.\n\n### Client library configuration\n\nSelect the tab corresponding to your programming language for instructions on\nhow to configure your client library. \n\n### Java\n\nSet the private key JSON path and delegate account ID in your configuration.\nIf you're using an `ads.properties` file, add the following: \n\n api.googleads.serviceAccountSecretsPath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n api.googleads.serviceAccountUser=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\nSee the [configuration guide](/google-ads/api/docs/client-libs/java/config-file) for\nadditional details.\n\n### .NET\n\nConfigure the following keys in your `App.config / Web.config`. See the\nconfiguration guide for additional details. \n\n \u003cadd key=\"OAuth2Mode\" value=\"SERVICE_ACCOUNT\" /\u003e\n \u003cadd key=\"OAuth2SecretsJsonPath\" value=\"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\" /\u003e\n\n \u003c!-- Supply the email address of the user to impersonate. --\u003e\n \u003cadd key=\"OAuth2PrnEmail\" value=\"\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\" /\u003e\n\n### Python\n\nSet the private key JSON path and impersonated email in your configuration.\nIf you're using a `google-ads.yaml file`, YAML string, or `dict`, add the\nfollowing: \n\n json_key_file_path: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eJSON_KEY_FILE_PATH\u003c/span\u003e\u003c/var\u003e\n impersonated_email: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eIMPERSONATED_EMAIL\u003c/span\u003e\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n export GOOGLE_ADS_IMPERSONATED_EMAIL=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\n### PHP\n\nConfigure the following keys in your `google_ads_php.ini`. See the\n[configuration guide](/google-ads/api/docs/client-libs/php/configuration) for additional\ndetails. \n\n ; For service account flow.\n jsonKeyFilePath = \"\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\"\n scopes = \"https://www.googleapis.com/auth/adwords\"\n impersonatedEmail = \"\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\"\n\n### Ruby\n\nConfigure the following keys in your [`google_ads_config.rb`](//github.com/googleads/google-ads-ruby/blob/HEAD/google_ads_config.rb#L29). \n\n c.keyfile = '\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e'\n c.impersonate = '\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e'\n\n### Perl\n\nSet the private key JSON path and delegate account ID in your\nconfiguration. If you're using a `googleads.properties` file, add the\nfollowing: \n\n jsonKeyFilePath=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n impersonatedEmail=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\nIf you're using environment variables, add the following to your Bash\nconfiguration or environment: \n\n export GOOGLE_ADS_JSON_KEY_FILE_PATH=\u003cvar translate=\"no\"\u003eJSON_KEY_FILE_PATH\u003c/var\u003e\n export GOOGLE_ADS_IMPERSONATED_EMAIL=\u003cvar translate=\"no\"\u003eIMPERSONATED_EMAIL\u003c/var\u003e\n\n### Security concerns\n\nSince the service account has domain-level delegation control for your Google\nWorkspace domain, it's important to protect the key file that allows a service\naccount to access the Google services for which it's authorized. This is\nespecially true since that service account has the ability to impersonate any\nuser in the domain.\n\nAnother good practice is to allow service accounts to access only the minimum\nrequired set of APIs. This is a preemptive measure to limit the amount of data\nan attacker can access if the service account's key file is compromised."]]