با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این راهنما نحوه دسترسی به Google Ads API با حسابهای سرویس را مورد بحث قرار میدهد.
حساب سرویس ، حسابی است که به جای یک کاربر نهایی، به برنامه شما تعلق دارد. حسابهای سرویس تعامل سرور به سرور را بین یک برنامه وب و یک سرویس Google فعال میکنند. برنامه شما از طرف حساب سرویس با Google API تماس می گیرد، بنابراین کاربران مستقیماً درگیر نیستند.
حسابهای سرویس از یک جریان OAuth 2.0 استفاده میکنند که نیازی به مجوز انسانی ندارد و در عوض از یک فایل کلیدی استفاده میکنند که فقط برنامه شما میتواند به آن دسترسی داشته باشد.
استفاده از حساب های خدماتی دو مزیت کلیدی دارد:
مجوز دسترسی به Google API به عنوان یک مرحله پیکربندی انجام میشود، بنابراین از عوارض مرتبط با سایر جریانهای OAuth 2.0 که به تعاملات کاربر نیاز دارند، اجتناب میشود.
جریان ادعای OAuth 2.0 به برنامه شما امکان میدهد در صورت لزوم جعل هویت کاربران دیگر را جعل کند.
دو راه برای مجوز دادن با حسابهای سرویس وجود دارد: مستقیم یا با جعل هویت (توصیه نمیشود).
[توصیه می شود] مجوز با دسترسی مستقیم به حساب
در این گزینه به حساب سرویس دسترسی مستقیم به حساب Google Ads خود می دهید.
کلید حساب سرویس را با فرمت JSON دانلود کنید و شناسه حساب سرویس و ایمیل را یادداشت کنید.
به عنوان سرپرست به حساب Google Ads خود وارد شوید. به Admin > Access and Security بروید.
روی دکمه + در زیر تب کاربران کلیک کنید.
ایمیل حساب سرویس را در کادر ورودی ایمیل تایپ کنید. سطح مناسبی از سطح دسترسی حساب را انتخاب کنید و روی دکمه افزودن حساب کلیک کنید. توجه داشته باشید که سطوح دسترسی ایمیل و مدیریت برای حسابهای سرویس پشتیبانی نمیشوند.
به حساب سرویس دسترسی داده شده است.
پیکربندی کتابخانه مشتری
برگه مربوط به زبان برنامه نویسی خود را برای دستورالعمل های نحوه پیکربندی کتابخانه مشتری خود انتخاب کنید.
جاوا
مسیر JSON کلید خصوصی را در پیکربندی خود تنظیم کنید. اگر از فایل ads.properties استفاده می کنید، موارد زیر را اضافه کنید:
مسیر JSON کلید خصوصی را تنظیم کنید و شناسه حساب را در پیکربندی خود واگذار کنید. اگر از فایل googleads.properties استفاده می کنید، موارد زیر را اضافه کنید:
jsonKeyFilePath=JSON_KEY_FILE_PATH
اگر از متغیرهای محیطی استفاده می کنید، موارد زیر را به پیکربندی یا محیط Bash خود اضافه کنید:
در این گزینه شما جعل هویت کاربری می شوید که با استفاده از حساب سرویس به حساب Google Ads شما دسترسی دارد. این رویکرد فقط برای مشتریان Google Workspace کار می کند. یک حساب سرویس فقط میتواند هویت کاربران (آدرس ایمیل) را در همان Google Workspace جعل کند.
یک کاربر Google Ads با مجوزهای حساب Google Ads که میخواهید به آن دسترسی داشته باشید.
راه اندازی دسترسی به حساب سرویس
از آنجایی که جعل هویت کاربر فقط در سطح دامنه کنترل میشود، استفاده از حسابهای خدمات و جریان ادعایی با Google OAuth 2.0 مستلزم داشتن دامنه خود در Google Workspace است. سپس برنامه شما و کاربران آن می توانند هویت هر کاربری را در دامنه جعل کنند.
مسیر JSON کلید خصوصی و ایمیل جعل شده را در پیکربندی خود تنظیم کنید. اگر google-ads.yaml file ، رشته YAML یا dict استفاده می کنید، موارد زیر را اضافه کنید:
مسیر JSON کلید خصوصی را تنظیم کنید و شناسه حساب را در پیکربندی خود واگذار کنید. اگر از فایل googleads.properties استفاده می کنید، موارد زیر را اضافه کنید:
از آنجایی که حساب سرویس دارای کنترل تفویض اختیار در سطح دامنه برای دامنه Google Workspace شما است، مهم است که از فایل کلیدی محافظت کنید که به حساب سرویس اجازه می دهد به خدمات Google که برای آن مجاز است دسترسی پیدا کند. این امر به ویژه از آنجایی صادق است که آن حساب سرویس توانایی جعل هویت هر کاربر در دامنه را دارد.
روش خوب دیگر این است که به حساب های سرویس اجازه دهید فقط به حداقل مجموعه مورد نیاز API ها دسترسی داشته باشند. این یک اقدام پیشگیرانه برای محدود کردن مقدار داده هایی است که مهاجم می تواند در صورت به خطر افتادن فایل کلیدی حساب سرویس، به آن دسترسی داشته باشد.
تاریخ آخرین بهروزرسانی 2025-09-03 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-03 بهوقت ساعت هماهنگ جهانی."],[[["\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."]]