پیوند حساب، دارندگان حساب گوگل را قادر میسازد تا به سرعت، یکپارچه و ایمن به سرویسهای شما متصل شوند. شما میتوانید پیوند حساب گوگل را برای به اشتراک گذاشتن دادههای کاربر از پلتفرم خود با برنامهها و سرویسهای گوگل پیادهسازی کنید.
پروتکل امن 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 انجام میشود.
شما پس از دریافت رضایت صاحبان حساب برای پیوند دادن حسابهایشان و اشتراکگذاری دادهها، برای هر حساب گوگل، توکنهای دسترسی به گوگل صادر میکنید.
令牌类型
OAuth 2.0 使用称为令牌的字符串在用户代理、客户端应用和 OAuth 2.0 服务器之间进行通信。
在账号关联期间,您可以使用三种类型的 OAuth 2.0 令牌:
授权代码。一种短期有效的令牌,可用于交换访问令牌和刷新令牌。出于安全考虑,Google 会调用您的授权端点以获取一次性或非常短效的代码。
访问令牌。授予持有者对资源的访问权限的令牌。为限制因丢失此令牌而导致的泄露风险,此令牌的有效期有限,通常会在大约一小时后过期。
刷新令牌。一个长期有效的令牌,在访问令牌到期时可以交换为新的访问令牌。如果您的服务与 Google 集成,则此令牌由 Google 专门存储和使用。Google 会调用您的令牌交换端点,以便将刷新令牌换成访问令牌,后者会用于访问用户数据。
令牌处理
在使用令牌时,分片环境和客户端-服务器交换中的竞态条件可能会导致复杂的时间安排和错误处理场景。例如:
- 您收到新的访问令牌请求,并发出新的访问令牌。同时,您会收到使用上一个未过期的访问令牌访问服务资源的请求。
- Google 尚未收到(或从未收到)您的刷新令牌回复。与此同时,之前有效的刷新令牌会在 Google 发出的请求中使用。
由于集群中运行的异步服务、网络行为或其他原因,请求和响应可能会以任何顺序到达,也可能根本不会到达。
我们无法保证您和 Google 的令牌处理系统内部以及它们之间的共享状态是立即且完全一致的。在短时间内,多个有效、未过期的令牌可以在系统内部或不同系统之间共存。为了尽可能减少对用户的负面影响,我们建议您执行以下操作:
- 接受未过期的访问令牌,即使已发出较新的令牌也是如此。
- 使用刷新令牌轮替的替代方案。
- 支持多个同时有效的访问令牌和刷新令牌。出于安全考虑,您应限制令牌数量和令牌生命周期。
维护和中断处理
在维护或意外停机期间,Google 可能无法调用您的授权或令牌交换端点来获取访问令牌和刷新令牌。
您的端点应返回 503 错误代码和空正文。在这种情况下,Google 会在有限的时间内重试失败的令牌交换请求。只要 Google 稍后能够获取刷新令牌和访问令牌,用户就不会看到失败的请求。
如果由用户发起,访问令牌请求失败会导致可见错误。如果使用隐式 OAuth 2.0 流程,用户将需要重试关联失败。
建议
您可以通过多种方法最大限度地降低维护影响。请考虑以下可选方案:
维护现有服务,并将有限数量的请求路由到新更新的服务。请仅在确认预期功能后迁移所有请求。
减少维护期间令牌请求的数量:
将维护期限制为短于访问令牌有效期。
暂时延长访问令牌生命周期:
- 将令牌生命周期延长到超过维护期。
- 等待访问令牌生命周期的两倍时间,以便用户将短时有效的令牌换成时长更长的令牌。
- 进入维护模式。
- 使用
503错误代码和空正文响应令牌请求。 - 退出维护。
- 将令牌生命周期缩短为正常值。
ثبت نام در گوگل
برای فعال کردن اتصال حساب، به جزئیات تنظیمات OAuth 2.0 شما و اشتراکگذاری اعتبارنامهها نیاز داریم. برای جزئیات بیشتر به بخش ثبتنام مراجعه کنید.