گوگل متعهد به پیشبرد برابری نژادی برای جوامع سیاه پوست است. ببینید چگونه.

ورود به سیستم Google برای تلویزیون و دستگاه ها

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

این برنامه یک کد کوتاه و URL ورود به سیستم را برای کاربر نمایش می دهد. سپس ، کاربر URL ورود به سیستم را در یک مرورگر وب باز می کند ، کد را وارد می کند و به برنامه اجازه دسترسی به اطلاعات ورود به سیستم کاربر را می دهد. سرانجام ، برنامه تأیید را دریافت می کند و کاربر به سیستم وارد می شود.

برای استفاده از این جریان ورود به سیستم ، برنامه باید روی دستگاهی اجرا شود که دارای معیارهای زیر باشد:

  • این دستگاه باید بتواند یک URL 40 کاراکتری و یک کد کاربری 15 کاراکتری به همراه دستورالعمل هایی برای کاربر نمایش دهد.
  • دستگاه باید به اینترنت متصل باشد.

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

برنامه شما برای درخواست از نقاط انتهایی ورود به سیستم Google ، به شناسه مشتری و راز مشتری OAuth 2.0 نیاز دارد.

برای یافتن شناسه مشتری و رمز مشتری پروژه خود ، موارد زیر را انجام دهید:

  1. اعتبارنامه OAuth 2.0 موجود را انتخاب کنید یا صفحه اعتبارنامه را باز کنید.
  2. اگر قبلاً این کار را انجام نداده اید ، با کلیک روی ایجاد اعتبارنامه> شناسه مشتری OAuth و ارائه اطلاعات مورد نیاز برای ایجاد اعتبارنامه ، اعتبار OAuth 2.0 پروژه خود را ایجاد کنید.
  3. برای ID مشتری در OAuth حفظ بخش شناسه 2.0 مشتری است. برای جزئیات ، روی شناسه مشتری کلیک کنید.

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

کد کاربری و URL تأیید را دریافت کنید

هنگامی که کاربر با استفاده از یک حساب Google درخواست ورود به سیستم را دارد ، با ارسال درخواست HTTP POST به نقطه پایانی دستگاه OAuth 2.0 ، https://oauth2.googleapis.com/device/code ، کد کاربر و URL تأیید را بدست می آورید. شناسه مشتری و لیستی از محدوده های مورد نیاز خود را با درخواست درج کنید. اگر فقط می خواهید کاربران را با حساب های Google آنها وارد کنید ، فقط profile و profile email . یا اگر می خواهید از طرف کاربران اجازه تماس با API پشتیبانی شده را داشته باشید ، علاوه بر محدوده profile و email دامنه مورد نیاز را نیز درخواست کنید.

در زیر یک مثال درخواست کد کاربر است:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

با استفاده از curl :

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

پاسخ به عنوان یک شی JSON بازگردانده می شود:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

برنامه شما مقدار user_code و verification_url را به کاربر نشان می دهد ، و همزمان ، از نقطه پایانی ورود به سیستم در interval مشخص شده نظرسنجی می کند تا اینکه کاربر وارد سیستم شود یا زمان مشخص شده توسط expires_in سپری شود.

کد کاربر و URL تأیید را نمایش دهید

پس از دریافت کد کاربری و URL تأیید صحت از نقطه پایانی دستگاه ، آنها را نمایش دهید و به کاربر دستور دهید URL را باز کرده و کد کاربر را وارد کند.

مقادیر verification_url و user_code قابل تغییر است. UI خود را به گونه ای طراحی کنید که بتواند محدودیت های زیر را کنترل کند:

  • user_code باید در فیلدی به اندازه کافی نمایش داده شود که بتواند 15 کاراکتر به اندازه W را کنترل کند.
  • verification_url باید در فیلدی به اندازه کافی نمایش داده شود که بتواند یک رشته URL را که 40 کاراکتر است ، اداره کند.

هر دو رشته می توانند شامل هر کاراکتر قابل چاپ از مجموعه کاراکترهای US-ASCII باشند.

وقتی رشته user_code را نمایش می دهید ، به هیچ وجه رشته را اصلاح نکنید (مانند تغییر مورد یا درج شخصیت های قالب بندی دیگر) ، زیرا در صورت تغییر قالب کد ، برنامه شما ممکن است خراب شود.

در صورت انتخاب ، می توانید رشته verification_url با حذف برنامه از URL برای اهداف نمایش ، تغییر دهید. اگر چنین کاری انجام دادید ، مطمئن شوید که برنامه شما قادر به مدیریت هر دو نوع "http" و "https" است. در غیر این صورت رشته verification_url را اصلاح نکنید.

هنگامی که کاربر به URL تأیید مراجعه می کند ، صفحه ای مشابه صفحه زیر را مشاهده می کند:

با وارد کردن کد ، دستگاهی را وصل کنید

پس از ورود کاربر به کد کاربر ، سایت ورود به سیستم Google صفحه رضایت مشابه با موارد زیر را ارائه می دهد:

صفحه نمایش رضایت مثال برای مشتری دستگاه

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

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

بعد از اینکه برنامه شما کد کاربر و نشانی وب تأیید را نمایش داد ، شروع به نظرسنجی از نقطه پایانی رمز ( https://oauth2.googleapis.com/token ) با کد دستگاهی که از نقطه پایانی دستگاه دریافت کرده اید ، کنید. در انتهای فاصله ، در ثانیه ، با مقدار interval مشخص شده ، نظرسنجی کنید.

موارد زیر مثالی از درخواست است:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

با استفاده از curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

اگر کاربر هنوز درخواست را تأیید نکرده است ، پاسخ به شرح زیر است:

{
  "error" : "authorization_pending"
}

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

{
  "error" : "slow_down"
}

هنگامی که کاربر وارد سیستم شد و به برنامه شما اجازه دسترسی به محدوده مورد نظر شما را داد ، پاسخ به درخواست بعدی برنامه شما شامل یک کد شناسه ، یک کد دسترسی و یک نشانه تازه سازی است:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

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

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

اطلاعات نمایه کاربر را از شناسه شناسه دریافت کنید

با رمزگشایی شناسه رمز با هر کتابخانه رمزگشایی JWT می توانید اطلاعات نمایه مربوط به کاربر به سیستم را وارد کنید. به عنوان مثال ، با استفاده از Auth0 jwt -decode کتابخانه جاوا اسکریپت:

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

اطلاعات بیشتر