نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • سیستم عامل
  • OAuth VKontakte: استفاده برای منافع شخصی. OAuth: شرح پروتکل به زبان ساده و قابل فهم

OAuth VKontakte: استفاده برای منافع شخصی. OAuth: شرح پروتکل به زبان ساده و قابل فهم


  1. باز کردن مرورگر داخلی با صفحه ورود
  2. از کاربر خواسته می شود تا تأیید کند که حقوق اعطا شده است.
  3. در صورت موافقت کاربر، مرورگر به یک صفحه خرد در قطعه (بعد از #) هدایت می شود که URL آن اضافه شده است. نشانه دسترسی
  4. برنامه تغییر مسیر را قطع می کند و دریافت می کند نشانه دسترسیاز آدرس صفحه
این گزینه نیاز به بالا بردن پنجره مرورگر در برنامه دارد، اما نیازی به بخش سرور و تماس سرور به سرور اضافی برای تبادل ندارد. کد مجوزبر نشانه دسترسی.
مثال
مرورگر را با صفحه ورود باز کنید:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > میزبان: connect.mail.ru

پس از اینکه کاربر مجوزها را اعطا کرد، یک تغییر مسیر به یک صفحه خرد استاندارد رخ می دهد، برای Mail.Ru این connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

برنامه باید آخرین تغییر مسیر را قطع کرده و از آدرس دریافت کند نشانه دسترسیو از آن برای دسترسی به منابع محافظت شده استفاده کنید.

مجوز با ورود و رمز عبور

مجوز از طریق لاگین و رمز عبور یک درخواست POST ساده است که در نتیجه برمی گردد نشانه دسترسی. این طرح چیز جدیدی نیست، اما برای عمومیت در استاندارد گنجانده شده است و تنها زمانی برای استفاده توصیه می شود که سایر گزینه های مجوز در دسترس نباشند.
مثال
> POST /oauth/token HTTP/1.1 > میزبان: connect.mail.ru > نوع محتوا: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
توضیحات در مشخصات

بازیابی مجوز قبلی

معمولا، نشانه دسترسیاین دارد دوره محدودمناسب بودن این می تواند مفید باشد، به عنوان مثال، اگر آن را از طریق منتقل می شود کانال های باز. برای جلوگیری از اجبار کاربر به ورود پس از انقضا نشانه دسترسی"و، در تمام گزینه های بالا، علاوه بر نشانه دسترسی"شاید دوباره برگردی نشانه رفرش. می توانید از آن برای دریافت استفاده کنید نشانه دسترسیبا استفاده از درخواست HTTP، مشابه مجوز با استفاده از ورود و رمز عبور.
مثال
> POST /oauth/token HTTP/1.1 > میزبان: connect.mail.ru > نوع محتوا: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8x8LOxt< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }

یک پروتکل محبوب که اجازه می دهد اجتماعیخدمات با یکدیگر ادغام می شوند و اجازه می دهند راه امنتبادل اطلاعات شخصی. OAuth می تواند 2 سرویس را به هم متصل کند، که هر کدام پایگاه کاربری خاص خود را دارند - این چیزی است که من به دنبال آن هستم در این موردمن آن را "اجتماعی" می نامم. وقتی کار با OAuth را شروع می کنید، اولین احساس این است که پروتکل بسیار پیچیده و اضافی است. در این مقاله سعی می کنم اصول OAuth را توضیح دهم زبان انسان.

نمونه مجوز متقابل

بیایید به سال 2005 برگردیم و تصور کنیم که در حال نوشتن یک شبکه اجتماعی هستیم. دارای فرمی برای وارد کردن مخاطبین از آدرس کتاب های جی میل. آنچه برای دسترسی لازم است مخاطبین جی میل? البته لاگین و رمز عبور صندوق پست. اما اگر از شما بخواهیم آنها را در وب سایت خود وارد کنید، کاربر مشکوک خواهد شد که چیزی اشتباه است. تضمین اینکه رمزهای وارد شده را روی سرور ذخیره نکنیم کجاست؟ بنابراین می خواهیم رمز عبور وارد شود فقط در وب سایت جی میلو پس از آن دسترسی به مخاطبین از طریق GMail API توسط ما فراهم شد شبکه اجتماعی(شاید برای مدتی). بیایید بر سر شرایط توافق کنیم.
  • مصرف كننده: مصرف كننده؛ اسکریپت برای پردازش فرم برای وارد کردن مخاطبین در یک شبکه اجتماعی.
  • ارائه دهنده خدمات: ارائه دهنده داده GMail، حاوی اطلاعات دفترچه آدرس مورد علاقه مصرف کننده است.
  • کاربر: کاربری که هم با مصرف کننده و هم در ارائه دهنده خدمات حساب دارد.
  • منبع محافظت شده: اطلاعات شخصی؛ مخاطبین از کتاب آدرس در GMail (به عنوان مثال منابع ارائه دهنده خدمات).
  • API ارائه دهنده: GMail API که به هر اسکریپتی اجازه می دهد تا مخاطبین را از دفترچه آدرس GMail بازیابی کند.
وظیفه OAuth- اطمینان حاصل کنید که کاربر این امکان را دارد که با داده های محافظت شده ارائه دهنده خدمات (GMail) روی سرویس مصرف کننده (در یک شبکه اجتماعی) کار کند، رمز عبور این داده ها را منحصراً در ارائه دهنده خدمات وارد کند و در حالی که در مصرف کننده باقی می ماند. سایت اینترنتی. آنقدر سخت نیست، درست است؟

OAuth چه تفاوتی با OpenID دارد؟

OAuth اغلب به عنوان یک پروتکل ربات شناخته می شود، در مقابل OpenID به عنوان یک پروتکل کاربر. آنها را گیج نکنید!
  1. OpenID یک پروتکل برای ثبت نام سریع است. OpenID به کاربر این امکان را می دهد که اگر قبلاً در جای دیگری در اینترنت ثبت نام کرده باشد، در هر سرویسی بدون وارد کردن رمز عبور حساب کاربری دریافت کند. (و سپس می‌توانید بدون وارد کردن رمز عبور وارد سرویس شوید و «جایی» مجاز هستید.) به عنوان مثال، اگر یک حساب کاربری در Yandex دارید، می‌توانید از آن برای «ورود به سیستم» به هر سرویسی که از مجوز OpenID پشتیبانی می‌کند استفاده کنید.
  2. OAuth یک پروتکل برای دسترسی مجاز به API های شخص ثالث است. OAuth به یک اسکریپت مصرف کننده اجازه می دهد تا در صورتی که کاربر اجازه دهد، دسترسی محدودی به API به داده های ارائه دهنده خدمات شخص ثالث داشته باشد. آن ها وسیله ای برای دسترسی به API است.

قیاس پلیس

تصور کنید که شما کارمند بخش تحقیقات جنایی هستید و به دنبال پایان دادن به پرونده سرقت وب مانی از سال 1973 هستید. بیایید در شرایط توافق کنیم:
  • مصرف کننده OAuth: تحقیقات جنایی
  • کاربر: افسر بازپرس جنایی.
  • ارائه دهنده خدمات: پرونده کارت آرشیو جرم.
  1. OpenID: یک کارمند بخش تحقیقات جنایی (کاربر) به نمایه کارت (ارائه‌دهنده خدمات) می‌آید، مجوز را در ورودی ارائه می‌کند و کارت‌ها را در محل برای جستجوی اطلاعات مرتب می‌کند.
  2. OAuth: یک کارمند بخش تحقیقات جنایی (کاربر) مستقیماً از محل کار (مصرف کننده) با فهرست کارت (ارائه دهنده خدمات) تماس می گیرد. او نام خود را گزارش می دهد؛ اگر او شناخته شود (مجوز)، او می خواهد فهرستی از تمام جرایم سال 1973 ارائه کند (تماس API).
همانطور که می بینید، OpenID و OAuth چیزهای متفاوتی هستند. OpenID به شما این امکان را می دهد که مستقیماً به منابع خاصی دسترسی داشته باشید. OAuth تضمین می کند که برخی از اطلاعات از طریق یک API از یک سرویس راه دور بازیابی می شوند.

طرح کلی این مقاله

قبل از اینکه به قسمت اصلی بپردازیم، بیایید ببینیم دقیقاً چگونه ادامه خواهیم داد.
  1. بیایید به مشکلاتی که هنگام اجرای مجوز متقابل "به صورت دستی" ایجاد می شود نگاه کنیم.
  2. بیایید در مورد اینکه "برنامه" چیست و مصرف کننده کیست صحبت کنیم.
  3. بیایید به اصول رمزنگاری بپردازیم.
  4. بیایید برنامه آزمایشی را که در این مقاله خواهیم نوشت را مشخص کنیم.
  5. بیایید در مورد یک سرور OAuth آزمایشی تصمیم بگیریم که روی آن آزمایش خواهیم کرد.
  6. بیایید تمام مراحل پروتکل OAuth را طی کنیم و منابع اسکریپت را ارائه کنیم.

درباره اختراع دوچرخه

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

ابتدا، بیایید خود فرم را برای وارد کردن مخاطبین از GMail بنویسیم: در مرحله بعد، از توسعه دهندگان GMail می خواهیم مطمئن شوند که وقتی کاربر به URI /auth.php هدایت می شود، یک فرم مجوز (در veloworld ما، GMail) به او داده می شود. با PHP نوشته شده است). پس از وارد کردن موفقیت آمیز رمز عبور، کاربر باید به سایتی که URL آن در پارامتر retpath مشخص شده است هدایت شود. همچنین، علاوه بر این، مقداری کلید مخفی باید در URL منتقل شود که می‌توان از آن برای دسترسی به GMail API استفاده کرد.

بنابراین، پس از وارد کردن رمز عبور، کاربر به آدرس زیر به سایت ما باز می‌گردد: و از اسکریپت /import.php به GMail API می‌رویم، کلید Y49xdN0Zo2B5v0RR را به آن منتقل می‌کنیم و مخاطبین را بارگذاری می‌کنیم: خوب، بیایید اکنون چنگک را بشمار (چون برجستگی ها برای شمارش دیر خواهد بود).

رنک اول: جایگزینی آدرس بازگشت retpath

خوب، مطمئناً، حدس زدید که مهاجم ابتدا یک لینک را در وب سایت خود قرار می دهد و شما را مجبور می کند روی آن کلیک کنید. در نتیجه، او کلید مخفی را که GMail برگردانده است و بنابراین مخاطبین شما را دریافت می کند:

چنگک دوم: "استراق سمع" از کلید مخفی

بیایید بگوییم که ما به نحوی از مسیر برگشت محافظت کردیم، و اکنون فقط می تواند به سایت ما اشاره کند. اما مشکل با پارامتر مخفی باقی می ماند که می توان از پشت جاسوسی کرد یا با گوش دادن به ترافیک WiFi رهگیری کرد. یا روزی سایت شما دارای یک آسیب پذیری XSS خواهد بود که به شما امکان می دهد کلید مخفی را "دزدید". با رمز ارزش، مهاجم می تواند شما را بخواند دفترچه آدرس. این بدان معنی است که راز باید از رهگیری محافظت شود (در حالت ایده آل، به هیچ وجه نباید از طریق URL منتقل شود).

ریک شماره سه: تغییر مسیرهای بسیار زیاد

اگر هر تماس API به یک راز متفاوت نیاز دارد، باید به تعداد تماس‌ها، تغییر مسیرها را به سایت ارائه‌دهنده خدمات سازماندهی کنیم. با شدت با استفاده از APIخیلی آهسته کار می کند و بسیار ناخوشایند است ...

ریک شماره چهار: شناسایی ضعیف مصرف کننده

البته GMail می خواهد بداند چه کسی از API آن استفاده می کند. اجازه دسترسی به برخی سایت‌ها و ممانعت از دسترسی به برخی دیگر... این بدان معناست که هنگام ایجاد یک درخواست در فرم واردات تماس، مصرف‌کننده (سایت) باید به ارائه‌دهنده خدمات (GMail) "ارائه" شود. در مورد ما، این تابع تا حدی توسط retpath (نام سایت در آن) انجام می شود، اما این روشجهانی نیست، زیرا هنگام فراخوانی متدهای API، مکانیسم "ارائه" نیز باید فعال شود.

بنیاد OAuth

قابل توجه است که هنوز بسیاری از "شنل های زیر آب" باقی مانده است. من آنها را در اینجا توصیف نمی کنم، زیرا این چنگک ها در سنگر ماریانا (عمق، 10920 متر) قرار دارند. برای توصیف آسیب‌پذیری‌ها ده‌ها صفحه طول می‌کشد. بنابراین من مستقیماً به توضیحات OAuth می‌روم، جایی که همه مشکلات قبلاً حل شده‌اند.

برنامه = دسترسی مصرف کننده + API

هنگام کار با OAuth، مهم است که عبارت Consumer به معنای "سایت" محدود نشود. مصرف کننده چیزی است کاربرد، و اینکه کجا قرار دارد چندان مهم نیست. نمونه هایی از مصرف کنندگان از زندگی واقعی: اما شما نمی توانید به تنهایی از OAuth خرابکاری کنید. در واقع، تمام چیزی که OAuth فراهم می کند، امکان ورود به سیستم است سرویس از راه دور(ارائه دهنده خدمات) و درخواست های مجاز به API ارائه دهید. مهم نیست که این API چگونه ساخته شده است: می تواند SOAP خالص، رویکرد REST و غیره باشد. نکته اصلی این است که همه روش APIبه عنوان ورودی پارامترهای ویژه پذیرفته می شود که بر اساس آن منتقل می شود پروتکل OAuth.

رمز = کلید + راز

یکی از اصول OAuth بیان می کند که هیچ کلید خصوصی نباید به صورت عمومی در درخواست ها ارسال شود (ما در مثال بالا به چرایی آن نگاه کردیم). بنابراین، پروتکل با مفهوم Token عمل می کند. این نشانه بسیار شبیه به جفت ورود + رمز عبور است: ورود - باز کردن اطلاعات، و رمز عبور فقط برای طرفین فرستنده و گیرنده شناخته شده است. در اصطلاح OAuth، آنالوگ ورود به سیستم Key و آنالوگ رمز عبور Secret نامیده می شود. به وضعیتی که راز را فقط برای فرستنده و گیرنده می‌دانند، اما برای هیچ‌کس دیگری، راز مشترک نامیده می‌شود.

بنابراین، اگر مصرف‌کننده و ارائه‌دهنده به نحوی در مورد یک راز مشترک به توافق برسند، آنها می‌توانند آشکارا کلیدهای مربوطه را در URL بدون ترس از رهگیری آن کلیدها مبادله کنند. اما چگونه می توان از URL ها با Keys در برابر جعل محافظت کرد؟

پیام = سند + امضای دیجیتال

"امضای دیجیتال" ترسناک به نظر می رسد، اما در واقع یک چیز نسبتاً واضح است. وقتی روی سندی با خودکار امضا می‌کنید، تأیید می‌کنید که سند توسط شما نوشته شده است نه شخص دیگری. امضای شما، همانطور که بود، به سند «اضافه شد» و در «یک مجموعه» با آن همراه می‌شود.

به همین ترتیب، یک امضای دیجیتال به بلوکی از داده ها اضافه می شود تا اطمینان حاصل شود که شخصی که داده ها را ایجاد کرده جعل هویت شخص دیگری نیست. امضای دیجیتال یک سند را رمزگذاری نمی کند، بلکه تنها اصالت آن را تضمین می کند!همان راز مشترک که برای گیرنده و فرستنده شناخته شده است، اما برای هیچ کس دیگری، به شما اجازه امضا می دهد.

چگونه کار می کند؟ اجازه دهید $sharedSecret ما = 529AeGWg، و ما آن را در گوش طرف دریافت کننده زمزمه کردیم. ما می خواهیم پیام "تلفن من 1234567" را با محافظت تضمین شده در برابر دستکاری توسط مهاجم ارسال کنیم.

  1. مصرف کننده یک امضای دیجیتال به پیام اضافه می کند نمای کلی- $transfer = $message . "-". md5($message . $sharedSecret); // $transfer = "تلفن من 1234567 است" . "-". md5 ("تلفن من 1234567 است" . "529AeGWg")
  2. ارائه‌دهنده خدمات داده‌ها را می‌گیرد، آن‌ها را به 2 قسمت - $message و $signature - تقسیم می‌کند و دقیقاً همان عملیات را انجام می‌دهد: $signatureToMatch = md5($message . $sharedSecret); // $signatureToMatch = md5("تلفن من 1234567 است" . "529AeGWg"); سپس تنها چیزی که باقی می‌ماند این است که مقدار $signatureToMatch حاصل را با آنچه در داده‌های $signature دریافت شده بود مقایسه کنید و اگر مقادیر مطابقت نداشتند جعلی گزارش دهید.

نمایش نحوه عملکرد OAuth با استفاده از یک برنامه کاربردی ساده به عنوان مثال

برای دریافت احساس واقعی OAuth، به دو چیز نیاز داریم:
  1. اسکریپتی که پیاده سازی می کند بخش مشتریپروتکل من فقط یک اسکریپت PHP کوچک نوشتم (لینک به آرشیو فشرده). این ویجتی است که می توان آن را در سایت های PHP قرار داد.
  2. یک سرور OAuth آزمایشی که می توانیم روی آن آزمایش کنیم. برای این منظور، استفاده از RuTvit راحت است: یک صفحه http://rutvit.ru/apps/new وجود دارد که به شما امکان می دهد یک برنامه آزمایشی را در 30 ثانیه اضافه کنید. (به هر حال، شما مجبور نیستید URL بازگشتی را در فرم مشخص کنید - ما هنوز آن را از اسکریپت آزمایشی ارسال می کنیم.)
با مشاهده کد اسکریپت دمو و مطالعه توضیحات زیر در مقاله می توانید به جزئیات پروتکل پی ببرید.

شما می توانید این ویجت را به سادگی با کپی کردن کد آن و تنظیم طرح، در هر وب سایت PHP وارد کنید. تمام توییت‌های سرویس RuTvit که با تگ هش مشخص شده برچسب‌گذاری شده‌اند، نمایش داده می‌شوند و همچنین امکان اضافه کردن توییت‌های جدید وجود دارد (این جایی است که OAuth وارد عمل می‌شود). ویجت از مجوز API و OAuth RuTvit استفاده می کند، که اتفاقاً با استاندارد Twitter API مطابقت دارد. می توانید این اسکریپت را روی سرور آزمایشی خود اجرا کنید. برای انجام این کار باید سه مرحله را انجام دهید:

  1. کد اسکریپت را دانلود کنید و آن را در هر دایرکتوری مناسب در وب سرور مستقر کنید.
  2. برنامه آزمایشی جدید خود را با سرور OAuth ثبت کنید.
  3. پس از ثبت برنامه، پارامترهای OA_CONSUMER_KEY و OA_CONSUMER_SECRET را در اسکریپت با مقادیر دریافت شده از سرور جایگزین کنید.

ثبت نام و تنظیمات برنامه

بیایید در مورد اینکه برنامه‌ها از کجا می‌آیند و چگونه ارائه‌دهنده خدمات درباره آنها می‌آموزد صحبت کنیم. همه چیز بسیار ساده است: ارائه دهنده خدمات یک فرم ثبت درخواست ویژه دارد که هر کسی می تواند از آن استفاده کند. در اینجا نمونه ای از چنین فرمی آورده شده است:


پس از ثبت درخواست، 5 پارامتر برای کار با OAuth به شما داده می شود. در اینجا چیزی است که آنها ممکن است شبیه باشند:


در اینجا، Consumer key و Consumer Secret نوعی "ورود + رمز عبور" برنامه شما هستند (مکالمه بالا در مورد توکن ها را به خاطر دارید؟ این فقط یکی از آنهاست). اجازه دهید یادآوری کنم که Consumer Secret یک راز مشترک است که فقط برای فرستنده و گیرنده شناخته می شود، اما هیچ کس دیگری. 3 مقدار باقی مانده URL های سرویس را مشخص می کند که اکنون معنای آنها را در نظر خواهیم گرفت.

OAuth = Fetch Request Token + Redirect to Authorization + Fetch Access Token + Call API

در مثال با GMail، ما از 2 نوع تماس از راه دور استفاده کردیم: الف) تغییر مسیر از طریق مرورگر. ب) دسترسی به API از داخل اسکریپت.

و ما تعدادی از مشکلات امنیتی را کشف کردیم که نشان می دهد باید چالش های بیشتری وجود داشته باشد. این همان چیزی است که در OAuth اتفاق می‌افتد: درخواست‌های میانی بیشتری از اسکریپت مصرف‌کننده به ارائه‌دهنده اضافه می‌شوند که با توکن‌ها کار می‌کنند. بیایید به آنها نگاه کنیم.

  1. در حال پردازش ارسال فرماین بخشی از OAuth نیست، بلکه بخشی از برنامه ما است. قبل از دسترسی به ارائه‌دهنده API، باید یک دستور کاری از کاربر برای این اقدام دریافت کنیم. در اینجا نمونه ای از چنین "دستور" آمده است:
  2. واکشی توکن درخواست (درخواست داخلی).
    • اسکریپت مصرف کننده دسترسی دارد درخواست URL نشانهارائه دهنده: به عنوان مثال، api.rutvit.ru/oauth/request_token. درخواست حاوی کلید مصرف کننده - "ورود برنامه" است و خود درخواست با استفاده از رمز مصرف کننده - "رمز عبور برنامه" امضا می شود که از جعل محافظت می کند.
    • در پاسخ، ارائه‌دهنده یک توکن «پر از زباله» به نام Request Token تولید و برمی‌گرداند. بعداً به آن نیاز خواهیم داشت، بنابراین باید آن را در جایی ذخیره کنیم - به عنوان مثال، در متغیر جلسه $S_REQUEST_TOK.
  3. تغییر مسیر به مجوز (از طریق تغییر مسیر در مرورگر).اکنون برنامه ما دارای یک Request Token منحصر به فرد است. دریافت مجوز از کاربر برای استفاده از این توکن، یعنی. ازش بپرس مجوز درخواست توکن.
    • مصرف کننده مرورگر را به یک مرورگر خاص هدایت می کند مجوز URLارائه دهنده: به عنوان مثال، api.rutvit.ru/oauth/authorize. Request Token Key در پارامترها ارسال می شود.
    • ارائه‌دهنده یک فرم مجوز برای کاربر خود نمایش می‌دهد و در صورت داشتن مجوز، مرورگر را به عقب هدایت می‌کند. که در آن دقیقا؟ و این را در پارامتر oauth_callback نشان می دهیم.
  4. واکشی نشانه دسترسی (درخواست داخلی).بنابراین، مرورگر پس از یک سری تغییر مسیر به برنامه ما بازگشت. این بدان معنی است که مجوز در ارائه دهنده موفقیت آمیز بود و رمز درخواست مجاز به کار است. با این حال، در OAuth برای امنیت، هر نشانه هدف خاص خود را دارد. برای مثال Request Token فقط برای دریافت تاییدیه از کاربر استفاده می شود و نه چیز دیگری. برای دسترسی به منابع، باید یک نشانه جدید - Access Token - یا همانطور که می گویند، "Exchange Request Token for Access Token" دریافت کنیم.
    • مصرف کننده اشاره دارد دسترسی به URL نشانه- به عنوان مثال، api.rutvit.ru/oauth/access_token - و از او می خواهد که به جای Request Token که دارد، یک Token Access به او بدهد. درخواست امضا شده است امضای دیجیتالیبر اساس رمز درخواست رمز.
    • ارائه دهنده یک توکن دسترسی پر از زباله تولید و برمی گرداند. او همچنین در جداول خود اشاره می کند که برای این نشانه دسترسیدسترسی به API مجاز است. اگر برنامه ما در آینده از API استفاده کند، باید رمز دسترسی را حفظ کند.
  5. Call API (درخواست داخلی).خوب، اکنون یک Access Token داریم و می توانیم کلید آن را هنگام فراخوانی متدهای API ارسال کنیم.
    • مصرف کننده درخواستی را برای API ارائه دهنده ایجاد می کند (به عنوان مثال، با استفاده از یک درخواست POST مطابق با ایدئولوژی REST). درخواست حاوی کلید رمز دسترسی است و با استفاده از رمز مشترک این نشانه امضا می شود.
    • ارائه دهنده تماس API را پردازش می کند و داده ها را به برنامه برمی گرداند.

پایان اسکریپت: خروجی ویجت

انتهای فیلمنامه باید واضح و بدون توضیحات دقیق باشد.
فهرست 14: پایان اسکریپت: خروجی ویجت
// مورد پایانی ) ) // دریافت همه توییت های موجود. $text = file_get_contents("http://api.rutvit.ru/search.xml?rpp=5&q=" . urlencode("#" . TAG)); $TWEETS = SimpleXMLElement جدید ($text); // میانبر برای نمایش پیام با رمزگذاری مجدد و نقل قول. تابع e($text، $quote = 1) ($text = iconv("utf-8", ENCODING، $text)؛ echo $quote? htmlspecialchars($text) : $text; ) ?>
وضعیت به عنوان $tweet) (?>
user->screen_name)؟>: text_formatted، 0)؟>
?action=form_is_sent" style="margin: 1em 0 0 0">

پیوندهای مفید در OAuth

  • روتویت
افزودن برچسب

در نتیجه، یک برنامه مشتری با استفاده از API AdWords می تواند بدون آدرس ایمیل و رمز عبور کاربر به حساب AdWords دسترسی داشته باشد.

ایجاد اعتبارنامه OAuth2

برای ایجاد اعتبارنامه OAuth2، مراحل زیر را دنبال کنید.

تعریف نوع برنامه

ابتدا باید تعیین کنید نوع برنامه، که می خواهید ایجاد کنید. دو نوع برنامه در AdWords API وجود دارد:

  • برنامه قابل نصب(توصیه شده)؛
  • برنامه تحت وب.

برای تعیین نوع برنامه مورد نیاز خود از جدول زیر استفاده کنید.

چه چیزی را انتخاب کنید وضعیت
برنامه قابل نصب(توصیه شده)
  • شما تمام حساب های AdWords خود را با یک حساب مدیر سطح بالا مدیریت می کنید.
  • آیا تازه شروع کرده اید یا می خواهید سریع شروع کنید؟
  • برنامه شما با یک مجموعه از حساب های AdWords با چندین کاربر کار می کند.
برنامه تحت وب
  • می‌خواهید از احراز هویت استفاده کنید تا به کاربران مختلف حقوق دسترسی متفاوتی به اطلاعات حساب AdWords خود بدهید.
  • برای مدیریت حساب های شخص ثالث، باید مجموعه های متعددی از اعتبار ایجاد کنید.
  • برنامه شما به URL های پاسخ به تماس نیاز دارد که در برنامه های نصب شده پشتیبانی نمی شوند.
توجه!حتی اگر در حال توسعه یک برنامه وب هستید، همچنان می توانید انتخاب کنید که کدام برنامه را نصب کنید. تفاوت اصلی در این است که آیا پس از صدور توکن نیاز به انجام تماس مجدد است یا خیر. برای مثال، اگر از یک حساب مدیر سطح بالا برای مدیریت همه حساب‌های AdWords خود استفاده می‌کنید، برنامه‌ای که نصب می‌کنید باید ثبت شود، حتی اگر برنامه مشتری از طریق اینترنت قابل دسترسی باشد. توجه داشته باشید.در زیر مورد بحث قرار می گیرند. اگر به عملکرد حساب سرویس نیاز ندارید، اکیداً توصیه می کنیم از فرآیند مجوز برای نصب یا برنامه وب استفاده کنید.

ایجاد شناسه مشتری و کد مخفی

هنگامی که نوع درخواست خود را مشخص کردید، روی تب مناسب زیر کلیک کنید و دستورالعمل ها را دنبال کنید تا یک Client ID و Secret ایجاد کنید.

برنامه قابل نصب

  1. باز کن
  2. یک پروژه ایجاد کنید ايجاد كردن.
  3. اعتبارنامه ایجاد کنید، و سپس - شناسه مشتری OAuth.
  4. صرفه جویی
  5. در فصل نوع برنامهانتخاب کنید انواع دیگرو اطلاعات مورد نیاز را ارائه دهید.
  6. کلیک ايجاد كردن.
  7. مشخص کنندهو کلید مخفی
برنامه تحت وب
  1. باز کن
  2. از منوی کشویی پروژه ها را انتخاب کنید یک پروژه ایجاد کنید، سپس نام پروژه را مشخص کرده و در صورت لزوم شناسه آن را تغییر دهید، سپس روی دکمه کلیک کنید ايجاد كردن.
  3. در صفحه اعتبارنامه، را انتخاب کنید اعتبارنامه ایجاد کنید، و سپس - شناسه مشتری OAuth.
  4. ممکن است از شما خواسته شود نام محصول را ارائه دهید. در این صورت کلیک کنید پنجره درخواست دسترسی را سفارشی کنید، اطلاعات خواسته شده را وارد کرده و کلیک کنید صرفه جوییبرای بازگشت به صفحه اعتبار.
  5. در فصل نوع برنامهانتخاب کنید برنامه تحت وب. دستورالعمل‌ها را برای تعیین منابع جاوا اسکریپت و/یا تغییر مسیر URI دنبال کنید.
  6. کلیک ايجاد كردن.
  7. در صفحه ای که ظاهر می شود، کپی کنید مشخص کنندهو کلید مخفیمشتری - هنگام تنظیم کتابخانه مشتری به آنها نیاز خواهید داشت.

دستورالعمل های زیر را برای پیکربندی استفاده از اعتبارنامه OAuth2 با کتابخانه مشتری زبان خود دنبال کنید.

توجه داشته باشید.اگر تصمیم گرفتید از یکی از کتابخانه های مشتری ما استفاده نکنید، باید فرآیندها را برای خود یا خودتان پیاده سازی کنید.

زمین بازی OAuth2

یک گزینه جایگزین برای ایجاد اعتبارنامه OAuth2 استفاده از آن است زمین بازی OAuth2. این سیستم در ترکیب با کنسول API Google، به شما امکان می دهد خودتان توکن های OAuth2 ایجاد کنید.

سیستم OAuth2 Playground برای آن دسته از کاربرانی طراحی شده است که فقط برای دسترسی به حساب ها نیاز دارند یکیحساب مدیر یا کاربر AdWords. اگر نیاز به درخواست اعتبار برای چندین کاربر دارید، بهتر است از کتابخانه های سرویس گیرنده همانطور که در بالا توضیح داده شد استفاده کنید.

تنظیمات

هشدار.برای استفاده زمین بازی OAuth2، باید ایجاد کنید شناسه مشتریبرای . این تنهایک نوع برنامه که با OAuth2 Playground کار می کند. در بخش بالا بیشتر بخوانید.

نحوه دریافت شناسه مشتری و کلید مخفی

  1. باز کن
  2. یک پروژه موجود را از منوی کشویی انتخاب کنید یا یک پروژه جدید ایجاد کنید.
  3. در صفحه اعتبارنامه، را انتخاب کنید اعتبارنامه ایجاد کنید، و سپس - شناسه مشتری OAuth.
  4. در فصل نوع برنامهانتخاب کنید برنامه تحت وب.
  5. در بخش، خط زیر را اضافه کنید: https://site/oauthplayground
  6. کلیک ايجاد كردن.
  7. آن را بنویسید مشخص کنندهو کلید مخفیمشتریان نشان داده شده در صفحه ظاهر شده در مرحله بعد به آنها نیاز خواهید داشت.

نحوه ایجاد توکن

هشدار.کدام حساب Google که در مرورگر خود وارد شده اید، تعیین می کند که با استفاده از اعتبارنامه OAuth2 که ایجاد می کنید، به کدام حساب های AdWords دسترسی داشته باشید. شاید بهتر باشد این مراحل را در حالت ناشناس یا بدون ورود به حساب Google خود تکمیل کنید. این احتمال وجود دارد که باید از اعتبارنامه‌هایی استفاده کنید که با حسابی که هنگام دریافت شناسه مشتری و کلید مخفی در آن بودید متفاوت است.

نحوه حذف OAuth2 Playground از شناسه مشتری

از آنجایی که قبلاً دارید نشانه رفرش، دیگر نیازی به استفاده از OAuth2 Playground به عنوان URI تغییر مسیر حل شده خود ندارید. برای حذف این سیستم از لیست، مراحل زیر را دنبال کنید:

  1. رفتن به .
  2. پروژه خود را از منوی کشویی انتخاب کنید.
  3. در صفحه Credentials، نام شناسه مشتری را انتخاب کنید.
  4. https://site/oauthplayground را از میدان حذف کنید URIهای تغییر مسیر مجاز. لطفا توجه داشته باشید که حداقل باید ترک کنید یکیتغییر مسیر URI.
  5. کلیک صرفه جویی.

بنابراین شما اعتبار OAuth خود را دارید. اکنون می توانید API AdWords را پرس و جو کنید و از آن در برابر کتابخانه مشتری مورد نیاز استفاده کنید.

حساب های سرویس OAuth2

این بخش نحوه دسترسی به API AdWords را با استفاده از حساب‌های سرویس توضیح می‌دهد.

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

AdWords API امکان دسترسی به حساب سرویس در دامنه‌های G Suite را فراهم می‌کند.

حساب سرویس یک فرآیند OAuth2 را پیاده سازی می کند که به جای اجازه دادن به کاربر از یک فایل کلیدی استفاده می کند که فقط برای برنامه شما قابل دسترسی است.

استفاده از حساب های خدماتی دو مزیت قابل توجه دارد:

  • مجوز دسترسی یک برنامه کاربردی به Google API در مرحله راه اندازی انجام می شود. این کار از دردسر نیاز به مداخله کاربر یا ذخیره نشانه‌ها در سایر جریان‌های OAuth2 جلوگیری می‌کند.
  • جعل هویت سایر کاربران در برنامه، در صورت لزوم، به عنوان بخشی از فرآیند تأیید OAuth2 انجام می شود.
توجه داشته باشید. اگر از ویژگی های خاص دامنه استفاده نمی کنید، مانند جعل هویت، به جای حساب های سرویس، استفاده از فرآیندی برای اکیداً توصیه می شود. به عنوان بخشی از فرآیندهای نصب OAuth2 و برنامه کاربردی وب، مشارکت کاربر فقط یک بار - در زمان اعطای دسترسی به حساب کاربری - لازم است.

جایگزینی برای حساب های خدماتی

حساب های سرویس به طور گسترده ای برای ارائه دسترسی برنامه ای به API ها با استفاده از پروتکل OAuth2 بدون دخالت کاربر استفاده می شوند.

با این حال، راه‌اندازی چنین حساب‌هایی برای کار با AdWords API آسان نیست. یک جایگزین ساده تربا یک نشانه تازه سازی تداوم یافته است. این رویکرد به برنامه اجازه می‌دهد تا در هر زمانی توکن‌های دسترسی جدید را درخواست کند.

به عنوان بخشی از این فرآیند، باید مجوز برنامه را از طریق کتابخانه مشتری پیکربندی کنید، همانطور که در بالا توضیح داده شد. این کار فقط باید یک بار انجام شود زیرا توکن های به روز رسانی Google OAuth2 هرگز منقضی نمی شوند.

الزامات

  • دامنه G Suite شما، مانند mydomain.com یا mybusiness.com.
  • توکن توسعه دهنده API AdWords و ترجیحاً یک حساب آزمایشی.
  • برای زبان مورد استفاده

راه اندازی دسترسی برای حساب مشتری

ابتدا باید یک کلید حساب کاربری در Google API Console ایجاد کنید.

  1. به حساب G Suite خود وارد شوید، باز کنید.
  2. از منوی کشویی پروژه ها را انتخاب کنید یک پروژه ایجاد کنید، سپس اطلاعات مورد نیاز را ارائه کرده و روی دکمه کلیک کنید ايجاد كردن. پروژه جدید در لیست فعال ظاهر می شود.
  3. از منوی گوشه بالا سمت چپ، را انتخاب کنید IAM و مدیریت، و سپس - حساب های خدماتیدر منوی سمت چپ
  4. کلیک یک حساب کاربری ایجاد کنیددر بالای صفحه.
  5. نام حساب سرویس را وارد کنید.
  6. کادر را علامت بزنید یک کلید خصوصی جدید ایجاد کنیدو نوع کلید JSON را انتخاب کنید.
  7. کادر را علامت بزنید تفویض اختیار دسترسی به داده را در دامنه G Suite خود فعال کنیدو نام محصول را برای پنجره درخواست دسترسی ارائه دهید.
  8. کلیک ايجاد كردن. فایل کلید JSON شروع به دانلود می کند. فایل را در مکانی امن ذخیره کنید که فقط شما به آن دسترسی دارید.
  9. در صفحه حساب های خدماتییک حساب سرویس جدید ظاهر می شود.
توجه داشته باشید. زیرا جعل هویت کاربر قابل کنترل است فقطدر سطح دامنه، برای استفاده از حساب‌های خدمات و فرآیند تأیید با سرویس‌های Google OAuth2، به دامنه خود نیاز دارید که با G Suite ثبت شده باشد. همه کاربران دامنه که از یک حساب سرویس با مجوزهای مناسب استفاده می کنند می توانند هر کاربر دامنه را جعل کنند.

مسائل امنیتی

از آنجایی که G Suite در سطح دامنه مدیریت می‌شود، باید به‌طور ایمن از فایل کلیدی که به حساب‌های مجاز اجازه دسترسی به خدمات Google را می‌دهد، محافظت کنید. این امر به ویژه به دلیل این واقعیت مهم است که ما به حساب سرویس امکان جعل هویت هر کاربر دامنه را ارائه می دهیم.

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

نحوه ارائه قابلیت های جعل هویت

برای اعطای قابلیت جعل هویت به یک حساب سرویس، این مراحل را دنبال کنید:

اکنون می توانید با استفاده از حساب سرویس خود به عنوان بخشی از فرآیند تأیید OAuth2 به حساب AdWords خود دسترسی پیدا کنید.

راه اندازی کتابخانه مشتری

برای مشاهده دستورالعمل‌های تنظیم کتابخانه مشتری، زبانی را انتخاب کنید.

توجه داشته باشید.اگر تصمیم گرفتید از یکی از کتابخانه های مشتری ما استفاده نکنید، باید خودتان این فرآیند را پیاده سازی کنید.

بهینه سازی درخواست های OAuth2

اگر برنامه شما از اشتراک گذاری اعتبار استفاده نمی کند، می تواند تعداد درخواست های ارسال شده به Google را به میزان قابل توجهی افزایش دهد. در نتیجه سرورهای ما ممکن است محدودیت هایی را برای چنین برنامه ای اعمال کنند که باعث کاهش سرعت عملکرد آن می شود.

این بخش نحوه بهینه‌سازی مدیریت اعتبار OAuth2 را توضیح می‌دهد تا برنامه شما تعامل مؤثرتری با API AdWords داشته باشد.

توجه!تحت اصطلاح اعتبارنامهاین به کل مجموعه ویژگی های اعتبار OAuth2، از جمله نشانه دسترسی و تاریخ انقضای آن اشاره دارد.

استراتژی های توزیع اعتبار

توزیع اعتبار بین درخواست های API عملکرد را بهبود می بخشد و همچنین از سربار و خطاهای ناشی از نقض محدودیت ها جلوگیری می کند.

استراتژی توزیع اعتبار به طراحی اپلیکیشن بستگی دارد.

در برنامه های چند رشته ای، شما باید از اعتبار یکسانی برای جلسه هر رشته استفاده کنید.

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

در برنامه‌ای که هم چند فرآیندی/توزیع شده و هم چند رشته‌ای است، هر فرآیند نیاز به ترکیب هر دو استراتژی دارد.

در زیر استراتژی هایی برای احراز هویت یک حساب AdWords، مانند حساب مدیر سطح بالا در یک سلسله مراتب ارائه شده است.

سپس چگونگی تطبیق این استراتژی ها را برای .

برنامه های کاربردی چند رشته ای

در برنامه های چند رشته ای، اعتبارنامه ها باید برای رشته های مختلف در دسترس باشند. به روز رسانی اعتبار باید به طور همزمان انجام شود تا از شرایط مسابقه جلوگیری شود.

این نمودار رشته هایی را نشان می دهد که در زمان اجرا درخواست ها را به API AdWords ارسال می کنند. یک مجموعه مشترک از جلسات (کاربران) استفاده می شود. توجه داشته باشید که هر جلسه باید از یک شیء اعتبارنامه استفاده کند. در پاسخ به هر درخواست API، موضوع جلسه (کاربر) مربوطه را دریافت می کند. اگر نشانه دسترسی نیاز به رفرش دارد، باید به صورت همزمان انجام شود تا از شرایط مسابقه جلوگیری شود. به عبارت دیگر، شی credentials باید Thread safe باشد.

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

به عنوان مثال، در کتابخانه کلاینت جاوا، یک کلاس Credential تک تنی ایجاد می کنید و از آن برای تمام جلسات استفاده می کنید.

برنامه های کاربردی چند فرآیندی و توزیع شده

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

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

نمودار به روز رسانی دوره ای اعتبارنامه ها و ثبت ویژگی های آنها در فروشگاه داده را نشان می دهد. سپس همه سرورها قبل از درخواست به API، اعتبارنامه ها را دریافت می کنند.

وظیفه به روز رسانی

وظیفه به روز رسانی به طور دوره ای اعتبارنامه ها را به روز می کند و آنها را به فروشگاه داده ارسال می کند. این وظیفه نباید منتظر انقضای اعتبار فعلی باشد، زیرا باعث می شود برنامه به دلیل عدم وجود اعتبارنامه معتبر برای مدتی از کار بیفتد.

بهترین جایگزین، اجباری به‌روزرسانی دوره‌ای است که هر بار اعتبارنامه‌های موجود در ذخیره‌گاه داده را با موارد جدید جایگزین می‌کند. کار به روز رسانی باید قبل از منقضی شدن اعتبار فعلی انجام شود تا در صورت بروز خطای موقت زمان کافی وجود داشته باشد. می توانید با انجام یک به روز رسانی هر 15 دقیقه شروع کنید.

توجه داشته باشید.اگر زمانی که یک درخواست API در حال پردازش است، رمز دسترسی اعتبارنامه منقضی شود، درخواست همچنان اجرا خواهد شد. به عنوان مثال، اگر یک پرس و جو طولانی مدت ایجاد کنید و کمتر از یک دقیقه برای دسترسی باقی مانده باشد، نتایج همچنان برگردانده می شوند.

ذخیره اطلاعات

ذخیره سازی داده ها برای ارائه اعتبار به فرآیندها و سرورهای مختلف استفاده می شود.

برای انجام این کار، می توانید از یک انبار داده موجود استفاده کنید یا یک انبار تخصصی ایجاد کنید که از طریق آن سرورها اعتبارنامه ها را دریافت می کنند. راه حل های ممکن شامل سرورهای کش (مانند Memcached یا Infinispan) و ذخیره سازی داده های NoSQL (مانند MongoDB) است.

هدف اصلی انبار داده ارائه یک رابط قابل اعتماد برای تمام سرورهایی است که به API دسترسی دارند. عملکرد آن برای خواندن سریع داده ها باید بهینه شود: سرورها و فرآیندها بیشتر از اینکه به روز شوند، اعتبارنامه ها را می خوانند.

به یاد داشته باشید که اعتبار خود را ایمن نگه دارید.

هنگام ذخیره اعتبار، باید ویژگی expiry_time (زمان فعلی + expires_in) و refresh_token را به همراه ویژگی access_token ذخیره کنید. ویژگی expiry_time (تاریخ انقضای توکن) با استفاده از فرمول زیر محاسبه می شود: access_token به روز رسانی زمان درخواست + expires_in time (تاریخ انقضای نشانه).

استخر سرور

هر سرور در استخر قبل از ارسال درخواست، آخرین اعتبارنامه ها را از فروشگاه داده دریافت می کند. تا زمانی که کار به روز رسانی با موفقیت اجرا شود، اعتبارنامه ها معتبر خواهند بود. با این حال، اگر وظیفه به روز رسانی یا ذخیره داده ها با شکست مواجه شود، باید مکانیزم بازگشتی وجود داشته باشد.

اگر سرور یا فرآیند نتواند اعتبارنامه‌ها را از ذخیره‌گاه داده دریافت کند، یا اگر اعتبارنامه منقضی شده باشد، سرور باید اعتبار خود را به‌روزرسانی کند تا به برنامه اجازه دهد تا زمانی که مشکل برطرف شود، به کار با API ادامه دهد.

در فرآیندهای چند رشته ای، شما باید از همان استراتژی برای توزیع اعتبار بین رشته ها استفاده کنید.

احراز هویت چند اکانت

اعتبار ایجاد شده برای حساب مدیر AdWords می تواند برای دسترسی به همه حساب های فرزند استفاده شود. کاربرانی که دارای یک حساب مدیر هستند معمولاً فقط نیاز به ایجاد اعتبار برای حساب مدیر سطح بالا دارند تا برنامه را برای همه حساب‌های AdWords زیرمجموعه مجاز کنند.

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

شما می توانید این استراتژی ها را برای هر دو برنامه با حداقل تغییرات دنبال کنید. هنگام استفاده از فضای ذخیره‌سازی مشترک، اعتبارنامه‌ها باید توسط شناسه حساب customerId نمایه شوند تا اطمینان حاصل شود که اعتبار با حساب مورد نظر مرتبط است. علاوه بر این، وظیفه به روز رسانی باید آنها را به موقع به روز کند. پس از اتصال یک حساب کاربری جدید، ممکن است لازم باشد آن را راه اندازی کنید.

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

نحوه کار OAuth2

توجه داشته باشید. API AdWords هنوز از ورود همزمان از طریق درخواست دسترسی به داده (طراحی ترکیبی) یا تفویض اختیار در سطح دامنه (2LO) پشتیبانی نمی‌کند.

محدوده

یک نشانه دسترسی می تواند درجات مختلفی از دسترسی به داده ها را فراهم کند. پارامتر دامنه متغیر مجموعه ای از منابع و عملیاتی را که توکن به آنها دسترسی می دهد تعریف می کند. هنگام درخواست توکن دسترسی، برنامه شما یک یا چند مقدار را به پارامتر scope ارسال می کند.

در زیر محدوده فعلی و قدیمی برای API AdWords آورده شده است.

دسترسی آفلاین

یک برنامه مشتری که از API AdWords استفاده می کند معمولاً دسترسی آفلاین را درخواست می کند. این ممکن است اتفاق بیفتد اگر برنامه شما نیاز به اجرای کارهای دسته ای داشته باشد در حالی که کاربر در حال مرور سایت شما بدون اتصال به اینترنت است.

برنامه های نصب شده به طور پیش فرض از دسترسی آفلاین استفاده می کنند.

هدر درخواست HTTP

هدر HTTP در هر درخواست به سرور API AdWords باید شامل فرم زیر باشد:

مجوز: حامل THE_ACCESS_TOKEN

POST ... HTTP/1.1 میزبان: ... مجوز: حامل 1/fFAGRNJru1FTz70BzhT3Zg نوع محتوا: text/xml;charset=UTF-8 طول محتوا: ...

به توکن‌ها دسترسی داشته باشید و آن‌ها را به‌روزرسانی کنید

در بیشتر موارد، نشانه رفرش باید در آن ذخیره شود محل امن، زیرا ممکن است در آینده مورد نیاز باشد. برای اطلاعات بیشتر در مورد درخواست توکن‌های دسترسی و به‌روزرسانی، به راهنمای زیر مراجعه کنید:

زمانی که یک نشانه دسترسی منقضی می شود

نشانه دسترسی دارای تاریخ انقضا است که به مقدار expires_in بستگی دارد. رمز دسترسی با منقضی شدهاقدامات را می توان با استفاده از یک نشانه رفرش به روز کرد، اما کتابخانه های مشتری ما این کار را به صورت خودکار انجام می دهند.

به جز مواردی که ذکر شده باشد، محتوای این صفحه تحت مجوز Creative Commons Attribution 3.0 مجوز دارد و نمونه کد تحت مجوز Apache 2.0 مجوز دارد. برای جزئیات، به ما مراجعه کنید. جاوا یک علامت تجاری ثبت شده Oracle و/یا شرکت های وابسته به آن است.

به روز شده در 24 سپتامبر 2018

بهترین مقالات در این زمینه