{"id":34339,"date":"2022-08-03T11:56:11","date_gmt":"2022-08-03T06:26:11","guid":{"rendered":"https:\/\/www.seminarsonly.com\/news\/?p=34339"},"modified":"2022-08-03T11:56:11","modified_gmt":"2022-08-03T06:26:11","slug":"https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url","status":"publish","type":"post","link":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/","title":{"rendered":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL"},"content":{"rendered":"<h2><span style=\"color: #800000;\">https \/\/www.google.com\/device code Login : Display the Google user code and verification URL<\/span><\/h2>\n<p>You can let users sign in to your app with their Google accounts on devices with limited input capabilities, such as Internet-connected TVs.<\/p>\n<p>The app displays a short code and sign-in URL to the user. Then, the user opens the sign-in URL in a web browser, enters the code, and grants the app permission to access the user&#8217;s sign-in information. Finally, the app receives confirmation and the user is signed in.<\/p>\n<p>To use this sign-in flow, the app must run on a device that meets the following criteria:<\/p>\n<ul>\n<li>The device must be capable of displaying a 40-character URL and a 15-character user code, along with instructions to the user.<\/li>\n<li>The device must be connected to the Internet.<\/li>\n<\/ul>\n<h2 id=\"get_a_client_id_and_client_secret\" role=\"presentation\" data-text=\"Get a client ID and client secret\"><span class=\"devsite-heading\" style=\"color: #800000;\" role=\"heading\" aria-level=\"2\">Get a client ID and client secret<\/span><\/h2>\n<p role=\"presentation\" data-text=\"Get a client ID and client secret\">Your app needs an OAuth 2.0 client ID and client secret to make requests to Google&#8217;s sign-in endpoints.<\/p>\n<p>To find your project&#8217;s client ID and client secret, do the following:<\/p>\n<ol>\n<li>Select an existing OAuth 2.0 credential\u00a0or open the\u00a0<a href=\"https:\/\/console.developers.google.com\/apis\/credentials\">Credentials page<\/a>.<\/li>\n<li>If you haven&#8217;t done so already, create your project&#8217;s OAuth 2.0 credentials by clicking\u00a0<b>Create credentials &gt; OAuth client ID<\/b>, and providing the information needed to create the credentials.<\/li>\n<li>Look for the\u00a0<b>Client ID<\/b>\u00a0in the\u00a0<b>OAuth 2.0 client IDs<\/b>\u00a0section. For details, click the client ID.<\/li>\n<\/ol>\n<p>If you are creating a new client ID, select the\u00a0<strong>TVs and Limited Input devices<\/strong>\u00a0application type.<\/p>\n<h2 id=\"obtain_a_user_code_and_verification_url\" role=\"presentation\" data-text=\"Obtain a user code and verification URL\"><span class=\"devsite-heading\" style=\"color: #800000;\" role=\"heading\" aria-level=\"2\">Obtain a user code and verification URL<\/span><\/h2>\n<p role=\"presentation\" data-text=\"Obtain a user code and verification URL\">Once a user requests to sign in using a Google Account, you obtain a user code and verification URL by sending an HTTP POST request to the OAuth 2.0 device endpoint,\u00a0<code dir=\"ltr\" translate=\"no\">https:\/\/oauth2.googleapis.com\/device\/code<\/code>. Include your client ID and a list of the scopes you need with the request. If you only want to sign in users with their Google accounts, request only the\u00a0<code dir=\"ltr\" translate=\"no\">profile<\/code>\u00a0and\u00a0<code dir=\"ltr\" translate=\"no\">email<\/code>\u00a0scopes; or, if you want to request permission to call a\u00a0supported API\u00a0on behalf of users, request the required scopes in addition to the\u00a0<code dir=\"ltr\" translate=\"no\">profile<\/code>\u00a0and\u00a0<code dir=\"ltr\" translate=\"no\">email<\/code>\u00a0scopes.<\/p>\n<p>The following is an example request for a user code:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre dir=\"ltr\" translate=\"no\">POST \/device\/code HTTP\/1.1\r\nHost: oauth2.googleapis.com\r\nContent-Type: application\/x-www-form-urlencoded\r\n\r\nclient_id=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_ID<\/var><\/span>&amp;scope=email%20profile<\/pre>\n<p>Using\u00a0<code dir=\"ltr\" translate=\"no\">curl<\/code>:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre dir=\"ltr\" translate=\"no\">curl -d \"client_id=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_ID<\/var><\/span>&amp;scope=email profile\" https:\/\/oauth2.googleapis.com\/device\/code<\/pre>\n<p>The response is returned as a JSON object:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre class=\"\" dir=\"ltr\" translate=\"no\"><code dir=\"ltr\"><span class=\"pun\">{<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"device_code\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"4\/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"user_code\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"GQVQ-JKEC\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"verification_url\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"https:\/\/www.google.com\/device\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"expires_in\"<\/span> <span class=\"pun\">:<\/span> <span class=\"lit\">1800<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"interval\"<\/span> <span class=\"pun\">:<\/span> <span class=\"lit\">5<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<\/code><\/pre>\n<p>Your app displays the\u00a0<code dir=\"ltr\" translate=\"no\">user_code<\/code>\u00a0and\u00a0<code dir=\"ltr\" translate=\"no\">verification_url<\/code>\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0<code dir=\"ltr\" translate=\"no\">interval<\/code>\u00a0until either the user signs in or the time specified by\u00a0<code dir=\"ltr\" translate=\"no\">expires_in<\/code>\u00a0has passed.<\/p>\n<h2 id=\"display_the_user_code_and_verification_url\" role=\"presentation\" data-text=\"Display the user code and verification URL\"><span class=\"devsite-heading\" style=\"color: #800000;\" role=\"heading\" aria-level=\"2\">Display the user code and verification URL<\/span><\/h2>\n<p role=\"presentation\" data-text=\"Display the user code and verification URL\">After you receive a user code and verification URL from the device endpoint, display them and instruct the user to open the URL and enter the user code.<\/p>\n<p>The values of\u00a0<code dir=\"ltr\" translate=\"no\">verification_url<\/code>\u00a0and\u00a0<code dir=\"ltr\" translate=\"no\">user_code<\/code>\u00a0are subject to change. Design your UI in a way that can handle the following limits:<\/p>\n<ul>\n<li><code dir=\"ltr\" translate=\"no\">user_code<\/code>\u00a0must be displayed in a field wide enough to handle 15\u00a0<code dir=\"ltr\" translate=\"no\">W<\/code>-sized characters.<\/li>\n<li><code dir=\"ltr\" translate=\"no\">verification_url<\/code>\u00a0must be displayed in a field wide enough to handle a URL string that is 40 characters long.<\/li>\n<\/ul>\n<p>Both strings can contain any printable character from the US-ASCII character set.<\/p>\n<p>When you display the\u00a0<code dir=\"ltr\" translate=\"no\">user_code<\/code>\u00a0string, don&#8217;t modify the string in any way (such as changing the case or inserting other formatting characters), because your app might break if the format of the code changes in the future.<\/p>\n<p>You can modify the\u00a0<code dir=\"ltr\" translate=\"no\">verification_url<\/code>\u00a0string by stripping off the scheme from the URL for display purposes if you choose. If you do, be sure your app can handle both &#8220;http&#8221; and &#8220;https&#8221; variants. Don&#8217;t otherwise modify the\u00a0<code dir=\"ltr\" translate=\"no\">verification_url<\/code>\u00a0string.<\/p>\n<p>When the user navigates to the verification URL, they see a page similar to the following:<\/p>\n<p><img decoding=\"async\" class=\"screenshot aligncenter\" src=\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\" alt=\"Connect a device by entering a code\" \/><\/p>\n<p>After the user enters the user code, the Google sign-in site presents a consent screen similar to the following:<\/p>\n<p><img decoding=\"async\" class=\"screenshot aligncenter\" src=\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/approval.png\" alt=\"Example consent screen for a device client\" \/><\/p>\n<p>If the user clicks\u00a0<strong>Allow<\/strong>, then your app can obtain an ID token to identify the user, an access token to call Google APIs, and a refresh token to acquire new tokens.<\/p>\n<h2 id=\"obtain_an_id_token_and_refresh_token\" role=\"presentation\" data-text=\"Obtain an ID token and refresh token\"><span style=\"color: #800000;\"><span class=\"devsite-heading\" role=\"heading\" aria-level=\"2\">Obtain an ID token and refresh token<\/span><button class=\"devsite-heading-link button-flat material-icons\" type=\"button\" aria-label=\"Copy link to this section: Obtain an ID token and refresh token\" data-title=\"Copy link to this section: Obtain an ID token and refresh token\" data-id=\"obtain_an_id_token_and_refresh_token\"><\/button><\/span><\/h2>\n<p>After your app displays the user code and verification URL, begin polling the token endpoint (<code dir=\"ltr\" translate=\"no\">https:\/\/oauth2.googleapis.com\/token<\/code>) with the device code that you received from the device endpoint. Poll the token endpoint at the interval, in seconds, specified by the\u00a0<code dir=\"ltr\" translate=\"no\">interval<\/code>\u00a0value.<\/p>\n<p>The following is an example request:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre dir=\"ltr\" translate=\"no\">POST \/token HTTP\/1.1\r\nHost: oauth2.googleapis.com\r\nContent-Type: application\/x-www-form-urlencoded\r\n\r\nclient_id=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_ID<\/var><\/span>&amp;client_secret=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_SECRET<\/var><\/span>&amp;code=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">DEVICE_CODE<\/var><\/span>&amp;grant_type=http:\/\/oauth.net\/grant_type\/device\/1.0\r\n<\/pre>\n<p>Using\u00a0<code dir=\"ltr\" translate=\"no\">curl<\/code>:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre dir=\"ltr\" translate=\"no\">curl -d \"client_id=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_ID<\/var><\/span>&amp;client_secret=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">CLIENT_SECRET<\/var><\/span>&amp;code=<span class=\"devsite-var-wrapper\"><var spellcheck=\"false\">DEVICE_CODE<\/var><\/span>&amp;grant_type=http:\/\/oauth.net\/grant_type\/device\/1.0\" https:\/\/oauth2.googleapis.com\/token<\/pre>\n<p>If the user has not yet approved the request, the response is as follows:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre class=\"\" dir=\"ltr\" translate=\"no\"><code dir=\"ltr\"><span class=\"pun\">{<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"error\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"authorization_pending\"<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<\/code><\/pre>\n<p>Your app should repeat these requests at a rate that does not exceed the value of\u00a0<code dir=\"ltr\" translate=\"no\">interval<\/code>. If your app polls too quickly, the response is as follows:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre class=\"\" dir=\"ltr\" translate=\"no\"><code dir=\"ltr\"><span class=\"pun\">{<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"error\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"slow_down\"<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<\/code><\/pre>\n<p>Once the user signs in and grants your app access to the scopes you requested, the response to your app&#8217;s next request includes an ID token, an access token, and a refresh token:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre class=\"\" dir=\"ltr\" translate=\"no\"><code dir=\"ltr\"><span class=\"pun\">{<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"access_token\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"token_type\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"Bearer\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"expires_in\"<\/span> <span class=\"pun\">:<\/span> <span class=\"lit\">3600<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"refresh_token\"<\/span> <span class=\"pun\">:<\/span> <span class=\"str\">\"1\/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n\u00a0 <\/span><span class=\"str\">\"id_token\"<\/span><span class=\"pun\">:<\/span> <span class=\"str\">\"eyJhbGciOiJSUzI...\"<\/span>\r\n<span class=\"pun\">}<\/span>\r\n<\/code><\/pre>\n<p>Upon receipt of this response, your app can decode the ID token to get basic profile information about the signed-in user, or\u00a0send the ID token to your app&#8217;s backend server\u00a0to securely authenticate with the server. Also, your app can use the access token to\u00a0call the Google APIs\u00a0that the user authorized.<\/p>\n<p>ID and access tokens have limited lifetimes. To keep the user signed in beyond the tokens&#8217; lifetimes, store the refresh token and use it to\u00a0request new tokens.<\/p>\n<h2 id=\"get_user_profile_information_from_the_id_token\" role=\"presentation\" data-text=\"Get user profile information from the ID token\"><span class=\"devsite-heading\" role=\"heading\" aria-level=\"2\">Get user profile information from the ID token<\/span><button class=\"devsite-heading-link button-flat material-icons\" type=\"button\" aria-label=\"Copy link to this section: Get user profile information from the ID token\" data-title=\"Copy link to this section: Get user profile information from the ID token\" data-id=\"get_user_profile_information_from_the_id_token\"><\/button><\/h2>\n<p>You can get profile information about the signed-in user by decoding the ID token with any\u00a0JWT-decoding library. For example, using the Auth0\u00a0jwt-decode\u00a0JavaScript library:<\/p>\n<div class=\"devsite-code-buttons-container\" role=\"group\" aria-label=\"Action buttons\"><\/div>\n<pre class=\"lang-js\" dir=\"ltr\" translate=\"no\"><span class=\"kwd\">var<\/span><span class=\"pln\"> user_profile <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> jwt_decode<\/span><span class=\"pun\">(<\/span><span class=\"devsite-var-wrapper\"><var spellcheck=\"false\" data-title=\"Edit id_token\">id_token<button class=\"material-icons devsite-icon-edit\" tabindex=\"-1\"><\/button><\/var><\/span><span class=\"pun\">);<\/span>\r\n\r\n<span class=\"com\">\/\/ The \"sub\" field is available on all ID tokens. This value is unique for each<\/span>\r\n<span class=\"com\">\/\/ Google account and can be used to identify the user. (But do not send this<\/span>\r\n<span class=\"com\">\/\/ value to your server; instead, send the whole ID token so its authenticity<\/span>\r\n<span class=\"com\">\/\/ can be verified.)<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_id <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"sub\"<\/span><span class=\"pun\">];<\/span>\r\n\r\n<span class=\"com\">\/\/ These values are available when you request the \"profile\" and \"email\" scopes.<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_email <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"email\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> email_verified <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"email_verified\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_name <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"name\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_photo_url <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"picture\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_given_name <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"given_name\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_family_name <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"family_name\"<\/span><span class=\"pun\">];<\/span>\r\n<span class=\"kwd\">var<\/span><span class=\"pln\"> user_locale <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> user_profile<\/span><span class=\"pun\">[<\/span><span class=\"str\">\"locale\"<\/span><span class=\"pun\">];<\/span><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>https \/\/www.google.com\/device code Login : Display the Google user code and verification URL You can let users sign in to your app with their Google accounts on devices with limited&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-34339","post","type-post","status-publish","format-standard","hentry","category-news"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>https \/\/www.google.com\/device code Login : Display the Google user code and verification URL - Seminarsonly.com<\/title>\n<meta name=\"description\" content=\"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL\" \/>\n<meta property=\"og:description\" content=\"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\" \/>\n<meta property=\"og:site_name\" content=\"Seminarsonly.com\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/seminarsonly\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-03T06:26:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\" \/>\n<meta name=\"author\" content=\"Freddy John\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@seminarsonly\" \/>\n<meta name=\"twitter:site\" content=\"@seminarsonly\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Freddy John\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\"},\"author\":{\"name\":\"Freddy John\",\"@id\":\"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd\"},\"headline\":\"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL\",\"datePublished\":\"2022-08-03T06:26:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\"},\"wordCount\":893,\"commentCount\":1,\"image\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\",\"articleSection\":[\"news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\",\"url\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\",\"name\":\"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL - Seminarsonly.com\",\"isPartOf\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\",\"datePublished\":\"2022-08-03T06:26:11+00:00\",\"author\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd\"},\"description\":\"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.\",\"breadcrumb\":{\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage\",\"url\":\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\",\"contentUrl\":\"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/seminarsonly.com\/news\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/seminarsonly.com\/news\/#website\",\"url\":\"https:\/\/seminarsonly.com\/news\/\",\"name\":\"Seminarsonly.com\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/seminarsonly.com\/news\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd\",\"name\":\"Freddy John\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g\",\"caption\":\"Freddy John\"},\"sameAs\":[\"https:\/\/seminarsonly.com\/news\"],\"url\":\"https:\/\/seminarsonly.com\/news\/author\/anupvnaick_51wq8y4s\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL - Seminarsonly.com","description":"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/","og_locale":"en_US","og_type":"article","og_title":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL","og_description":"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.","og_url":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/","og_site_name":"Seminarsonly.com","article_publisher":"https:\/\/facebook.com\/seminarsonly","article_published_time":"2022-08-03T06:26:11+00:00","og_image":[{"url":"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png","type":"","width":"","height":""}],"author":"Freddy John","twitter_card":"summary_large_image","twitter_creator":"@seminarsonly","twitter_site":"@seminarsonly","twitter_misc":{"Written by":"Freddy John","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#article","isPartOf":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/"},"author":{"name":"Freddy John","@id":"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd"},"headline":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL","datePublished":"2022-08-03T06:26:11+00:00","mainEntityOfPage":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/"},"wordCount":893,"commentCount":1,"image":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage"},"thumbnailUrl":"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png","articleSection":["news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/","url":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/","name":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL - Seminarsonly.com","isPartOf":{"@id":"https:\/\/seminarsonly.com\/news\/#website"},"primaryImageOfPage":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage"},"image":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage"},"thumbnailUrl":"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png","datePublished":"2022-08-03T06:26:11+00:00","author":{"@id":"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd"},"description":"Your app displays the\u00a0user_code\u00a0and\u00a0verification url\u00a0values to the user, and, at the same time, polls the sign-in endpoint at the specified\u00a0interval\u00a0until either the user signs in or the time specified by\u00a0expires_in\u00a0has passed.","breadcrumb":{"@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#primaryimage","url":"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png","contentUrl":"https:\/\/developers.google.com\/identity\/protocols\/images\/oauth2\/device\/user-code.png"},{"@type":"BreadcrumbList","@id":"https:\/\/seminarsonly.com\/news\/https-www-google-com-device-code-login-display-the-google-user-code-and-verification-url\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/seminarsonly.com\/news\/"},{"@type":"ListItem","position":2,"name":"https \/\/www.google.com\/device code Login : Display the Google user code and verification URL"}]},{"@type":"WebSite","@id":"https:\/\/seminarsonly.com\/news\/#website","url":"https:\/\/seminarsonly.com\/news\/","name":"Seminarsonly.com","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seminarsonly.com\/news\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/seminarsonly.com\/news\/#\/schema\/person\/75cf706896b7210fb0a84651adc258bd","name":"Freddy John","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/671d452f5fe9027ab894cbed50911cc764b2c16878222070bf044f21705d4c94?s=96&d=mm&r=g","caption":"Freddy John"},"sameAs":["https:\/\/seminarsonly.com\/news"],"url":"https:\/\/seminarsonly.com\/news\/author\/anupvnaick_51wq8y4s\/"}]}},"_links":{"self":[{"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/posts\/34339","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/comments?post=34339"}],"version-history":[{"count":0,"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/posts\/34339\/revisions"}],"wp:attachment":[{"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/media?parent=34339"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/categories?post=34339"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seminarsonly.com\/news\/wp-json\/wp\/v2\/tags?post=34339"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}