نمای کلی

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

پروتکل امن OAuth 2.0 به شما امکان می‌دهد حساب گوگل کاربر را با خیال راحت به حساب او در پلتفرم خود پیوند دهید و از این طریق به برنامه‌ها و دستگاه‌های گوگل اجازه دسترسی به سرویس‌های خود را بدهید.

کاربران می‌توانند حساب‌های خود را به هم متصل یا از هم جدا کنند و در صورت تمایل با استفاده از قابلیت «پیوند حساب گوگل»، یک حساب جدید در پلتفرم شما ایجاد کنند.

موارد استفاده

برخی از دلایل پیاده‌سازی لینک حساب گوگل عبارتند از:

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

  • محتوای ویدیویی و فیلم خود را با استفاده از Google TV پخش کنید.

  • دستگاه‌های متصل به خانه هوشمند گوگل را با استفاده از برنامه گوگل هوم و دستیار گوگل، با دستور «هی گوگل چراغ‌ها را روشن کن» مدیریت و کنترل کنید.

  • با استفاده از اقدامات محاوره‌ای ، مثلاً «سلام گوگل، غذای همیشگی من را از استارباکس سفارش بده»، تجربه‌ها و قابلیت‌های سفارشی‌سازی‌شده‌ی دستیار گوگل را برای کاربر ایجاد کنید.

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

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

ویژگی‌های پشتیبانی‌شده

این ویژگی‌ها توسط پیوند حساب گوگل پشتیبانی می‌شوند:

  • با استفاده از جریان ضمنی OAuth Linking، داده‌های خود را به سرعت به اشتراک بگذارید.

  • با جریان کد مجوز OAuth Linking، امنیت بهبود یافته‌ای را فراهم کنید.

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

  • با App Flip، اصطکاک را کاهش دهید. از یک برنامه‌ی مورد اعتماد گوگل، با یک لمس، برنامه‌ی اندروید یا iOS تأیید شده‌ی شما به صورت ایمن باز می‌شود و با یک لمس، رضایت کاربر جلب شده و حساب‌ها به هم متصل می‌شوند.

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

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

جریان‌های پیوند حساب

سه جریان لینک کردن حساب گوگل وجود دارد که همگی مبتنی بر OAuth هستند و شما را ملزم به مدیریت یا کنترل نقاط پایانی مجوز و تبادل توکن سازگار با OAuth 2.0 می‌کنند.

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

لینک‌دهی OAuth ('Web OAuth')

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

OAuth Linking از کد مجوز و جریان‌های OAuth ضمنی پشتیبانی می‌کند. سرویس شما باید میزبان یک نقطه پایانی مجوز سازگار با OAuth 2.0 برای جریان ضمنی باشد و هنگام استفاده از جریان کد مجوز، باید هم نقطه پایانی مجوز و هم نقطه پایانی تبادل توکن را در معرض نمایش قرار دهد.

شکل ۱. اتصال حساب کاربری روی گوشی کاربر با Web OAuth

پیوند معکوس برنامه مبتنی بر OAuth ('App Flip')

یک جریان OAuth که کاربران را برای لینک دادن به برنامه شما ارسال می‌کند.

قابلیت App Flip Linking مبتنی بر OAuth، کاربران را در حین جابجایی بین برنامه‌های تلفن همراه اندروید یا iOS تأیید شده شما و پلتفرم گوگل راهنمایی می‌کند تا تغییرات پیشنهادی دسترسی به داده‌ها را بررسی کرده و رضایت خود را برای پیوند حساب کاربری‌شان در پلتفرم شما با حساب گوگلشان اعلام کند. برای فعال کردن App Flip، سرویس شما باید از قابلیت OAuth Linking یا ورود مبتنی بر OAuth با Google Linking با استفاده از جریان کد مجوز پشتیبانی کند.

App Flip هم برای اندروید و هم برای iOS پشتیبانی می‌شود.

چگونه کار می‌کند:

برنامه گوگل بررسی می‌کند که آیا برنامه شما روی دستگاه کاربر نصب شده است یا خیر:

  • اگر برنامه پیدا شود، کاربر به برنامه شما "منتقل" می‌شود. برنامه شما رضایت کاربر را برای پیوند دادن حساب کاربری به گوگل جمع‌آوری می‌کند و سپس به سطح گوگل "برمی‌گردد".
  • اگر برنامه پیدا نشود یا در طول فرآیند پیوند دادن برنامه به حالت قبل خطایی رخ دهد، کاربر به جریان Streamlined یا Web OAuth هدایت می‌شود.

شکل ۲. پیوند حساب کاربری در گوشی کاربر با App Flip

پیوند ساده مبتنی بر OAuth ('ساده')

ورود با گوگل مبتنی بر OAuth، پیونددهی ساده ، ورود با گوگل را به بالای پیونددهی OAuth اضافه می‌کند و به کاربران این امکان را می‌دهد که فرآیند پیونددهی را بدون ترک سطح گوگل تکمیل کنند و در نتیجه، اصطکاک‌ها و عدم موفقیت‌ها را کاهش می‌دهد. پیونددهی ساده مبتنی بر OAuth با ترکیب ورود با گوگل با پیونددهی OAuth، بهترین تجربه کاربری را با ورود به سیستم، ایجاد حساب کاربری و پیونددهی حساب کاربری بدون مشکل ارائه می‌دهد. سرویس شما باید از نقاط پایانی مجوز و تبادل توکن سازگار با OAuth 2.0 پشتیبانی کند. علاوه بر این، نقطه پایانی تبادل توکن شما باید از ادعاهای JSON Web Token (JWT) پشتیبانی کند و اهداف check ، create و get را پیاده‌سازی کند.

چگونه کار می‌کند:

گوگل حساب کاربری را تأیید می‌کند و این اطلاعات را به شما منتقل می‌کند:

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

شکل ۳. اتصال حساب کاربری روی گوشی کاربر با استفاده از قابلیت اتصال ساده

از کدام جریان باید استفاده کنید؟

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

با توکن‌ها کار کنید

لینک کردن حساب گوگل بر اساس استاندارد صنعتی OAuth 2.0 انجام می‌شود.

شما پس از دریافت رضایت صاحبان حساب برای پیوند دادن حساب‌هایشان و اشتراک‌گذاری داده‌ها، برای هر حساب گوگل، توکن‌های دسترسی به گوگل صادر می‌کنید.

Token types

OAuth 2.0 uses strings called tokens to communicate between the user agent, the client application, and the OAuth 2.0 server.

Three types of OAuth 2.0 tokens can be used during account linking:

  • Authorization code. A short-lived token that can be exchanged for an access and a refresh token. For security purposes, Google calls your authorization endpoint to obtain a single use or very short-lived code.

  • Access token. A token that grants the bearer access to a resource. To limit exposure that could result from the loss of this token, it has a limited lifetime, usually expiring after an hour or so.

  • Refresh token. A long-lived token that can be exchanged for a new access token when an access token expires. When your service integrates with Google, this token is exclusively stored and used by Google. Google calls your token exchange endpoint to exchange refresh tokens for access tokens, which are in turn used to access user data.

Token handling

Race conditions in clustered environments and client-server exchanges can result in complex timing and error handling scenarios when working with tokens. For example:

  • You receive a request for a new access token, and you issue a new access token. Concurrently, you receive a request for access to your service's resource using the previous, unexpired access token.
  • Your refresh token reply is yet to be received (or is never received) by Google. Meanwhile, the previously valid refresh token is used in a request from Google.

Requests and replies can arrive in any order, or not at all due to asynchronous services running in a cluster, network behavior, or other means.

Immediate and fully consistent shared state both within, and between, your and Google's token handling systems cannot be guaranteed. Multiple valid, unexpired tokens can coexist within or across systems short period of time. To minimize negative user impact we recommend you do the following:

  • Accept unexpired access tokens, even after a newer token is issued.
  • Use alternatives to Refresh Token Rotation.
  • Support multiple, concurrently valid access and refresh tokens. For security, you should limit the number of tokens and token lifetime.
Maintenance and outage handling

During maintenance or unplanned outages Google might be unable to call your authorization or token exchange endpoints to obtain access and refresh tokens.

Your endpoints should respond with a 503 error code and empty body. In this case, Google retries failed token exchange requests for a limited time. Provided that Google is later able to obtain refresh and access tokens, failed requests are not visible to users.

Failing requests for an access token result in a visible error, if initiated by a user. Users will be required to retry linking failures if the implicit OAuth 2.0 flow is used.

Recommendations

There are many solutions to minimize maintenance impact. Some options to consider:

  • Maintain your existing service and route a limited number of requests to your newly updated service. Migrate all requests only after confirming expected functionality.

  • Reduce the number of token requests during the maintenance period:

    • Limit maintenance periods to less than the access token lifetime.

    • Temporarily increase the access token lifetime:

      1. Increase token lifetime to greater than maintenance period.
      2. Wait twice the duration of your access token lifetime, enabling users to exchange short lived tokens for longer duration tokens.
      3. Enter maintenance.
      4. Respond to token requests with a 503 error code and empty body.
      5. Exit maintenance.
      6. Decrease token lifetime back to normal.

ثبت نام در گوگل

برای فعال کردن اتصال حساب، به جزئیات تنظیمات OAuth 2.0 شما و اشتراک‌گذاری اعتبارنامه‌ها نیاز داریم. برای جزئیات بیشتر به بخش ثبت‌نام مراجعه کنید.