عیب‌یابی

خطاها ممکن است به‌دلیل راه‌اندازی نادرست محیط، اشکال در نرم‌افزار، یا ورودی نامعتبر ازسوی کاربر ایجاد شوند. صرف‌نظر از منبع، باید مشکل را عیب‌یابی کنید و کدتان را اصلاح کنید یا منطقی برای رسیدگی به خطای کاربر اضافه کنید. این راهنما برخی‌از روال‌های مطلوب را هنگام عیب‌یابی خطاهای Google Ads API مورد بحث قرار می‌دهد.

اطمینان از اتصال‌پذیری

  1. مطمئن شوید که به Google Ads API دسترسی دارید و راه‌اندازی به‌درستی انجام شده است. اگر پاسخ شما خطای HTTP برمی‌گرداند، مطمئن شوید که آن‌ها را به‌دقت بررسی می‌کنید و به سرویس‌هایی که قصد دارید از کدتان استفاده کنید دسترسی دارید.

  2. اعتبارنامه‌های شما در درخواست شما جاسازی شده است تا سرویس‌ها بتوانند شما را اصالت‌سنجی کنند. با ساختار درخواست‌ها و پاسخ‌های Google Ads API آشنا شوید، به‌ویژه اگر قصد دارید تماس‌ها را بدون استفاده از کتابخانه‌های کارخواه مدیریت کنید. هر کتابخانه مشتری با دستورالعمل‌های خاصی درباره نحوه گنجاندن اعتبارنامه‌های شما در فایل پیکربندی ارسال می‌شود (به README کتابخانه مشتری مراجعه کنید).

  3. بررسی کنید که از اعتبارنامه‌های صحیح استفاده می‌کنید. راهنمای شروع سریع ما شما را در فرایند دریافت مجموعه صحیح موردنیازتان راهنمایی می‌کند. برای مثال، پاسخ ناموفق زیر نشان می‌دهد که کاربر اعتبارنامه‌های اصالت‌سنجی نامعتبر ارسال کرده است:

    {
      "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "detail": "Authentication error: 2"
          }
        ]
      }
    }
    

اگر این مراحل را دنبال کرده‌اید و همچنان مشکل دارید، وقت آن است که به عیب‌یابی خطاهای Google Ads API بپردازید.

مشخص کردن مشکل

Google Ads API معمولاً خطاها را به‌عنوان یک شیء شکست JSON گزارش می‌کند که حاوی فهرستی از خطاها در پاسخ است. این اشیاء کد خطا و همچنین پیامی ارائه می‌دهند که دلیل وقوع خطا را توضیح می‌دهد. این‌ها اولین نشانه‌هایی هستند که نشان می‌دهند مشکل از کجا است.

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword.match_type'.",
      "location": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 1 }
        ]
      }
    }
  ]
}

همه کتابخانه‌های مشتری ما استثناهایی را ایجاد می‌کنند که خطاها را در پاسخ کپسوله‌سازی می‌کنند. ثبت این استثناها و چاپ پیام‌ها در گزارش یا صفحه عیب‌یابی روشی عالی برای شروع است. ادغام این اطلاعات با سایر رویدادهای ثبت‌شده در برنامه شما، نمای کلی خوبی از آنچه ممکن است باعث ایجاد مشکل شود ارائه می‌دهد. وقتی خطا را در گزارش‌ها شناسایی کردید، باید بفهمید که معنی آن چیست.

خطا را بررسی کنید

  1. به سند خطاهای رایج ما مراجعه کنید که رایج‌ترین خطاهای مشاهده‌شده را پوشش می‌دهد. این بخش پیام خطا، مراجع میانای برنامه‌سازی کاربردی مربوط، و نحوه اجتناب از خطا یا رسیدگی به آن را شرح می‌دهد.

  2. اگر در اسناد خطاهای رایج ما به‌طور خاص به این خطا اشاره نشده است، به اسناد مرجع ما مراجعه کنید و رشته خطا را جستجو کنید.

  3. کانال‌های پشتیبانی ما را جستجو کنید تا به توسعه‌دهندگان دیگری که تجربه‌هایشان را با API هم‌رسانی می‌کنند دسترسی پیدا کنید. ممکن است شخص دیگری با مشکلی که شما دارید مواجه شده باشد و آن را حل کرده باشد.

  4. برای دریافت راهنمایی درباره عیب‌یابی مشکلات اعتبارسنجی یا محدودیت حساب، به مرکز راهنمایی Google Ads بروید—Google Ads API قوانین و محدودیت‌های محصول اصلی Google Ads را به ارث می‌برد.

  5. پست‌های وبلاگ گاهی اوقات مرجع خوبی برای عیب‌یابی برنامه‌تان هستند.

  6. اگر با خطایی مواجه شدید که مستند نشده است، با پشتیبانی تماس بگیرید.

پس‌از تحقیق درباره خطا، وقت آن است که علت ریشه‌ای را تعیین کنید.

پیدا کردن علت

پیام استثنا را بررسی کنید تا علت خطا را تعیین کنید. پس‌از مشاهده پاسخ، درخواست را برای علت احتمالی بررسی کنید. برخی‌از پیام‌های خطای Google Ads API شامل fieldPathElements در فیلد location از GoogleAdsError هستند، که نشان می‌دهد خطا در کجای درخواست رخ داده است. برای مثال:

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 0 },
          { "fieldName": "create" },
          { "fieldName": "keyword" }
        ]
      }
    }
  ]
}

وقتی مشکلی را عیب‌یابی می‌کنید، ممکن است متوجه شوید که برنامه‌تان اطلاعات نادرستی به میانای برنامه‌سازی کاربردی ارائه می‌دهد. اکیداً توصیه می‌کنیم از اشکال‌زدای محیط توسعه یکپارچه (IDE) برای تنظیم نقاط توقف، گام‌به‌گام پیش رفتن در خطوط کد، و بررسی بار داده‌های درخواست ساخته‌شده قبل‌از ارسال آن‌ها استفاده کنید.

دوباره بررسی کنید تا مطمئن شوید درخواست با ورودی‌های برنامه شما مطابقت دارد (برای مثال، ممکن است نام پویش به درخواست نرسد). مطمئن شوید ماسک فیلدی ارسال می‌کنید که با به‌روزرسانی‌هایی که می‌خواهید انجام دهید مطابقت داشته باشد—Google Ads API از به‌روزرسانی‌های پراکنده پشتیبانی می‌کند. حذف فیلد از ماسک فیلد در درخواست تغییر نشان می‌دهد که میانای برنامه‌سازی کاربردی باید آن را نادیده بگیرد. اگر برنامه شما شیئی را بازیابی کند، تغییری ایجاد کند، و آن را برگرداند، ممکن است در فیلدی بنویسید که از به‌روزرسانی پشتیبانی نمی‌کند. شرح فیلد را در اسناد مرجع بررسی کنید تا ببینید آیا محدودیتی برای زمان یا امکان به‌روزرسانی فیلد وجود دارد یا نه.

نحوه دریافت کمک

همیشه نمی‌توانید مشکل را خودتان شناسایی و حل کنید. می‌توانید برای دریافت راهنمایی با پشتیبانی تماس بگیرید.

سعی کنید تا حد امکان اطلاعات بیشتری در پُرسمان‌هایتان بگنجانید. موارد توصیه‌شده شامل این‌ها است:

  • درخواست و پاسخ JSON پاک‌سازی‌شده. حتماً اطلاعات حساس مانند کد دسترسی OAuth، ژتون بازآوری، و شناسه‌های مشتری را بردارید.
  • تکه‌کدها. اگر مشکلی مربوط به زبان دارید یا برای کار با API درخواست کمک می‌کنید، قطعه کدی را برای توضیح کاری که انجام می‌دهید اضافه کنید.
  • request-id. این کار به اعضای تیم «روابط توسعه‌دهندگان Google» امکان می‌دهد درخواست شما را درصورت ارائه در محیط تولید پیدا کنند. توصیه می‌کنیم request-id موجود در سرایندهای پاسخ یا استثناهایی را که خطاهای پاسخ را دربرمی‌گیرند، و همچنین بافت بیشتری نسبت‌به request-id به‌تنهایی، ثبت کنید.
  • اطلاعات اضافی، مانند نسخه زمان اجرا یا مفسر و پلاتفرم، نیز می‌تواند هنگام عیب‌یابی مفید باشد.

برطرف کردن مشکل

اکنون که مشکل را پیدا کرده‌اید و راه‌حلی برای آن یافته‌اید، وقت آن است که تغییرات را اعمال کنید و اصلاحیه را با حساب آزمایشی (ترجیحاً) یا حساب تولید (اگر اشکال فقط برای داده‌های حساب تولید خاصی اعمال می‌شود) آزمایش کنید.

مراحل بعدی

اکنون که این مشکل را حل کردید، آیا متوجه راهی برای بهبود کدتان شدید تا از ابتدا از این مشکل جلوگیری کنید؟

ایجاد مجموعه خوبی از آزمون‌های واحد به بهبود قابل‌توجه کیفیت و قابلیت اطمینان کد کمک می‌کند. همچنین فرایند آزمایش تغییرات جدید را تسریع می‌کند تا مطمئن شوید عملکرد قبلی را مختل نکرده‌اند. یک استراتژی خوب برای رسیدگی به خطا نیز کلید آشکار کردن تمام داده‌های لازم برای عیب‌یابی است.