{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/137","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"With population growth and municipal services expanding, cities need to get creative on how to provide services to all citizens without…","fields":{"slug":"/identity/unlock-the-future-of-smart-cities/"},"html":"<p>With population growth and municipal services expanding, cities need to get creative on how to provide services to all citizens without compromising the quality of service. A single platform is needed where all services are centralized and customer experience is taken into account. Below, we’ll look at some examples and best practices for municipalities to follow. </p>\n<p>As digital transformation transforms everyday life and interactions, cities are looking for ways to offer their services through online platforms. Cities are becoming “smarter” not to jump onto the technology bandwagon but in order to increase citizen engagement and serve them better. </p>\n<p>Residents are accustomed to 24/7, anywhere access to consumer products and services, and this expectation has bled over into government and municipal services. That’s why utility companies are also adapting their business models to work with new digital technology.</p>\n<p><a href=\"https://www.loginradius.com/registration-and-authentication/\">The LoginRadius Citizen Identity Platform</a> helps cities overcome these obstacles in three ways: </p>\n<ol>\n<li>\n<p>Centralizing online services: Cities need one unified self-service portal so that their constituents have a seamless, efficient experience as they access the services they need. The LoginRadius Identity Platform enables cities to centralize their customer-facing digital applications into one portal.  </p>\n<p>This single locus of access delivers a connected experience across multiple touchpoints and channels. LoginRadius has supported applications such as Account Summary, Customer Profile, Permit Applications and Bill Payment.   </p>\n</li>\n<li>\n<p>Helping maintain one digital identity across all customer service: What good is a centralized portal if citizens have to create multiple identities for individual web and mobile applications? Operating in this way creates identity silos that prevent a thorough view of the customer’s journey and preferences, which means the customer experience can’t be optimized for each individual.  </p>\n<p>Without a seamless user experience, engagement rates drop. But with <a href=\"https://www.loginradius.com/single-sign-on/\">LoginRadius Single Sign-on (SSO),</a> cities and companies can allow customers to access all applications within their platform with a single set of unified credentials, rather than having to separately register and log in to each service.   </p>\n</li>\n<li>\n<p>Integrating with third-party applications: Many public sector organizations have a hard time using customer data to improve the digital experience. The LoginRadius Identity Platform offers prebuilt integrations with over 150 third-party applications such as CRM, email marketing tools, online communities, payment systems and more.  </p>\n<p>This enables organizations to use that customer data to better understand their customers, offer more useful information and deliver that information more directly.</p>\n</li>\n</ol>\n<p><a href=\"https://www.loginradius.com/resource/surrey-case-study\"><img src=\"/bbdf68efa8208887cb39f258ae65c4e5/CS-My-City-MySurrey-1024x310.webp\"></a></p>\n<p>The City of Surrey offers a great real-world example of what our Identity Platform can do. This bustling city in Metro Vancouver, British Columbia welcomes approximately 1,500 new residents per month – all in need of municipal services. The City was not able to expand its physical offices or add staff, so the solution was to move all services online.</p>\n<p>We’ve created a case study to show you how the LoginRadius Identity Platform helped the City of Surrey transform its online services and unlock its future as a smart city.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=unlock-the-future-of-smart-cities\"><img src=\"/1bebf239d110701b9b534d7eb481a5ac/Book-a-demo-1024x310.webp\" alt=\"Book-a-demo-loginradius\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"March 13, 2020","updated_date":null,"description":"With population growth and the expansion of public services, cities need to be innovative about how to provide services to all people without compromising service quality. There is a need for a single platform where all facilities are centralised and customer experience is considered. Below, for municipalities to follow, we'll look at some examples and best practises.","title":"Unlock the Future of Smart Cities","tags":["digital transformation","digital identity","sso"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/e1e2d4dfaf4314477f919d890c2a6cdd/7f8e9/future-of-smart-cities.webp","srcSet":"/static/e1e2d4dfaf4314477f919d890c2a6cdd/61e93/future-of-smart-cities.webp 200w,\n/static/e1e2d4dfaf4314477f919d890c2a6cdd/1f5c5/future-of-smart-cities.webp 400w,\n/static/e1e2d4dfaf4314477f919d890c2a6cdd/7f8e9/future-of-smart-cities.webp 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"As the risk of data abuse is on the rise, more and more companies are seeking to adhere to the existing data privacy and regulatory…","fields":{"slug":"/identity/how-loginradius-helps-enterprises-stay-ccpa-compliant-in-2020/"},"html":"<p>As the risk of data abuse is on the rise, more and more companies are seeking to adhere to the existing data privacy and regulatory compliances. </p>\n<p>From the EU’s General Data Protection Regulation (GDPR) to the recently released California's Consumer Privacy Act (CCPA), each regulation has a unique strategic imperative. </p>\n<ul>\n<li>The European Union’s GDPR came into force on May 25, 2018, to protect the personally identifiable information (PII) of its citizens. </li>\n<li>Likewise, on January 1, 2020, the California Consumer Privacy Act (CCPA) went live, affecting millions of companies with its share of new consumer rights.</li>\n</ul>\n<p>Businesses cannot afford to ignore these new policies. From a financial point of view, the  <a href=\"https://www.itgovernance.co.uk/dpa-and-gdpr-penalties\">European supervisory authorities</a> imposed as many as 133 administrative penalties by the end of 2019, which sums up to a massive fine of approximately €400 million (£337 million).</p>\n<p>Businesses need to understand that customers are the sole drivers of the economy, and a trusted relationship with them will lead to loyalty and boosted revenue generation.</p>\n<p>On a similar note, enterprises are often curious if LoginRadius, as a customer identity and access management (CIAM) platform, meets regulatory requirements of the popular data protection laws.</p>\n<p>Well yes, it does.</p>\n<p>Not just the infamous GDPR, LoginRadius also helps enterprises adhere to the recently active <a href=\"https://www.loginradius.com/blog/2019/05/ccpa-introduction/\">California Consumer Privacy Act (CCPA)</a>.</p>\n<p>But before we go any further, let’s understand a few things about the CIAM platform and the CCPA compliance.</p>\n<h2 id=\"what-does-it-take-to-make-the-perfect-ciam-platform\" style=\"position:relative;\"><a href=\"#what-does-it-take-to-make-the-perfect-ciam-platform\" aria-label=\"what does it take to make the perfect ciam platform permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What does it take to make the perfect CIAM platform?</h2>\n<p>Well, the driving force of CIAM lies in its ability to use data security as a tool for offering seamless customer experiences. </p>\n<p>Customer Identity and Access Management (CIAM) is a relatively new customer-focused business solution that collects, manages, and provides a secure and seamless access to customer's personal data.</p>\n<p>An ideal <a href=\"https://www.loginradius.com/blog/2019/06/perfect-ciam-platform/\">customer identity management platform</a> should include all the crucial components that drives an enterprise – from customers, suppliers, contractors, partners, employees to systems, applications, and devices.</p>\n<h2 id=\"what-is-the-california-consumer-privacy-act-ccpa\" style=\"position:relative;\"><a href=\"#what-is-the-california-consumer-privacy-act-ccpa\" aria-label=\"what is the california consumer privacy act ccpa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is the California Consumer Privacy Act (CCPA)?</h2>\n<p>The California Consumer Privacy Act is a relatively new consumer privacy right enacted by the State of California. It comprises groundbreaking laws relating to contemporary business practices and the role of citizens in securing their personal data in the Golden State.</p>\n<p><a href=\"https://www.loginradius.com/gdpr-and-privacy/\">Like the GDPR</a>, these new regulations apply not only to California businesses but to all the companies that do business in the state.</p>\n<h3 id=\"what-does-the-ccpa-offer\" style=\"position:relative;\"><a href=\"#what-does-the-ccpa-offer\" aria-label=\"what does the ccpa offer permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What does the CCPA offer?</h3>\n<ul>\n<li><strong>Ownership:</strong> Under CCPA, consumers will have the right to know what information businesses collect about them, and if need be, restrict them from sharing or selling their personal data.</li>\n<li><strong>No discrimination:</strong> CCPA does not allow businesses to discriminate against consumers who haven't approved of selling their data. Consequently, enterprises cannot impose additional charges or offer services with low quality to those consumers.</li>\n<li><strong>Security and protection:</strong> Under CCPA, companies are accountable for protecting the personal information of its consumers against potential data breaches.</li>\n</ul>\n<h3 id=\"what-rights-do-consumers-enjoy-under-ccpa\" style=\"position:relative;\"><a href=\"#what-rights-do-consumers-enjoy-under-ccpa\" aria-label=\"what rights do consumers enjoy under ccpa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What rights do consumers enjoy under CCPA?</h3>\n<p><img src=\"/b52156ac4caa52f86783255735cc19e0/image2.webp\" alt=\"5 consumer rights under ccpa\"></p>\n<h3 id=\"what-data-is-considered-personal-under-the-ccpa\" style=\"position:relative;\"><a href=\"#what-data-is-considered-personal-under-the-ccpa\" aria-label=\"what data is considered personal under the ccpa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What data is considered personal under the CCPA?</h3>\n<ul>\n<li><strong>Direct identifiers</strong> like name, address, e-mail id, social security numbers, passport information, driver's license, and signature.</li>\n<li><strong>Unique identifiers</strong> like IP addresses, account id, cookies, pixel tags, beacons, and telephone numbers. </li>\n<li><strong>Internet activity identifiers</strong> like search history, advertisement, browsing history, etc.</li>\n<li><strong>Geolocation identifiers</strong> like location history.</li>\n<li><strong>Sensitive data</strong> like financial and medical history, religious or political views, sexual preferences, education data, etc.</li>\n<li><strong>Biometric identifiers</strong> like voice recordings, fingerprints, facial recognition, etc. </li>\n<li><strong>Commercial data</strong> like property records, products or services purchased, purchasing histories, etc.</li>\n</ul>\n<h3 id=\"is-ccpa-a-big-deal\" style=\"position:relative;\"><a href=\"#is-ccpa-a-big-deal\" aria-label=\"is ccpa a big deal permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Is CCPA a big deal?</h3>\n<p>Yes, CCPA is a big deal for companies that collect data from the residents of California – irrespective of where their business is located. </p>\n<p>Non-compliance may lead to hefty fines and rigid enforcements.</p>\n<h3 id=\"what-are-the-ccpa-penalties\" style=\"position:relative;\"><a href=\"#what-are-the-ccpa-penalties\" aria-label=\"what are the ccpa penalties permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What are the CCPA penalties?</h3>\n<p>The maximum penalty for unintentional violations is $2,500 USD, while for intentional violations, it may go as high as $7,500 USD. Consumers may also take legal action against companies and can sue them individually for each breach.</p>\n<h2 id=\"does-ccpa-apply-to-your-business\" style=\"position:relative;\"><a href=\"#does-ccpa-apply-to-your-business\" aria-label=\"does ccpa apply to your business permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Does CCPA apply to your business?</h2>\n<p>If your business or organization answers positively to any one of the following criteria, you are required to comply with the CCPA.</p>\n<ul>\n<li>Does your business earn annual gross revenue of more than $25 million USD?</li>\n<li>Do you buy, sell, or share data of 50,000 or more consumers for commercial intent?</li>\n<li>Does your business earn 50% or more of its revenue by selling consumers' personal information?</li>\n</ul>\n<p>Remember: Non-profit or small companies that do not meet the income threshold do not require to comply.</p>\n<h2 id=\"can-ccpa-optimize-user-experience\" style=\"position:relative;\"><a href=\"#can-ccpa-optimize-user-experience\" aria-label=\"can ccpa optimize user experience permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Can CCPA optimize user experience?</h2>\n<p>Today, consumers have a lot of control over how companies shape their brand image and retain their businesses. </p>\n<p>When it comes to CCPA, the Californian data privacy law provides some excellent opportunities to gain an advantage over customer experience. </p>\n<p>Wondering how? Let’s find out.</p>\n<p><img src=\"/1c7253cfc260cb7d8eb49d512a532d43/image3.webp\" alt=\"CCPA optimize user experience\"></p>\n<p><strong>1. CCPA ensures improved data security.</strong></p>\n<p>The repercussions of not adhering to international compliance protocols aren’t limited to privacy issues. Apart from the apparent loss of customer trust, it results in revenue losses and possible fines. </p>\n<p>A data protection law as stringent as the CCPA gives consumers the confidence and trust to share their sensitive data online. Simply because consumers can easily find out what data is collected, stored, and disclosed to others.</p>\n<p><strong>2. CCPA builds trust with consent management.</strong></p>\n<p>With a plethora of cases on identity theft and data disclosure by big shot conglomerates, consumers find it challenging to trust enterprises with their personal data. </p>\n<p>Enterprises willing to build sustainable relations with their consumers need to understand the importance of privacy. </p>\n<p>Consumers should have the freedom to view or upgrade their consent approval. If the need arises, they should be allowed the right to withdraw their consent too.</p>\n<p>As such, CCPA requires enterprises to display easy-to-understand consent requests, so consumers know what they are getting into.</p>\n<p><a href=\"https://www.loginradius.com/resource/the-ccpa-and-customer-identity\"><img src=\"/c62fbeba5c65dddf6f32bbac3af59099/WP-The-CCPA-and-Customer-Identity-Reaping-the-Benefits-of-Compliance.webp\"></a></p>\n<p><strong>3. CCPA allows frictionless identity management.</strong></p>\n<p>When it comes to enterprise-class identity management, factors like compliance and security play a critical role. </p>\n<p>In the data-driven world, a CCPA-regulated customer identity and data management solution can seek consent and record permissions before processing any data.</p>\n<h2 id=\"how-loginradius-identity-solution-assists-enterprises-with-ccpa-compliance\" style=\"position:relative;\"><a href=\"#how-loginradius-identity-solution-assists-enterprises-with-ccpa-compliance\" aria-label=\"how loginradius identity solution assists enterprises with ccpa compliance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How LoginRadius’ Identity Solution assists enterprises with CCPA compliance</h2>\n<p>LoginRadius is a <a href=\"https://www.loginradius.com/blog/2019/06/customer-identity-and-access-management/\">customer identity and access management</a> solution that provides a 360-degree view of customers for a seamless collection, storage, management, and protection of personal data.</p>\n<p>It helps companies meet CCPA regulatory requirements without compromising the user experience. Its one-of-a-kind data protection features include client registration, sign-in, authentication, single sign-on, data governance, and consent management, among others.</p>\n<p><img src=\"/3ff2cb8e678228fa2104f7e3651e91e0/image4.webp\"></p>\n<p>The following capabilities further help enterprises meet privacy compliance regulations.</p>\n<ul>\n<li>Clear and specific statement of consent.</li>\n<li>Registration and progressive profiling. </li>\n<li>Data record and access permissions. </li>\n<li>Deletion of data. </li>\n<li>User identity and access management. </li>\n<li>Management of centralized access control.</li>\n<li>Age verification mechanism.</li>\n</ul>\n<p>There’s more.</p>\n<p>LoginRadius enforces a set of policies, procedures, programs, and standards for effective security management. It aims to offer a risk-free organizational setup by safeguarding customer's data against potential breaches.</p>\n<p>The identity solution is designed with a cloud-native architecture and complies with the <a href=\"https://www.loginradius.com/compliances-list/\">major security assurance programs</a> including:</p>\n<ol>\n<li>OpenID - End-user identity verification supported by OAuth 2.0 protocol</li>\n<li>PCI DSS PCI SSC administered standard for payment transactions</li>\n<li>ISO 27001:2013 - Information security management system</li>\n<li>ISO 27017:2015 - Information security for cloud services</li>\n<li>AICPA SOC 2 (Type II) - System-level controls for Trust Services Criteria - security, availability, process integrity, confidentiality, and privacy </li>\n<li>ISAE 3000 - International attestation standard for assurance over non-financial information </li>\n<li>NIST Cybersecurity Framework - Standardized security framework to manage and reduce cybersecurity risk.  </li>\n<li>CSA CCM Level 1, Level 2 - STAR Self-Assessment, STAR Certification, STAR Attestation, and C-STAR Assessment.</li>\n<li>CIS Critical Security Controls Global standards for internet security</li>\n<li>US Privacy Shield Complaint resolution for EEA citizens</li>\n<li>ISO/IEC 27018:2019 - PII Protection</li>\n</ol>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>Consumers expect the privacy and security of their personal data, and it is the responsibility of enterprises to build and maintain a trusted relationship. Recent data breaches and identity thefts highlight the importance of data protection laws and compliance like <a href=\"https://www.loginradius.com/blog/identity/ccpa-vs-gdpr-the-compliance-war/\">CCPA and GDPR</a>. </p>\n<p>With an identity solution like LoginRadius, you can eliminate lengthy processes that ruin the user experience, and still maintain international governance over data privacy. </p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=how-loginradius-helps-enterprises-stay-ccpa-compliant-in-2020\"><img src=\"/788a6a84e389edac18728007099fdc1d/Book-a-free-demo-request-1024x310.webp\" alt=\"book-a-free-demo-loginradius\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"March 06, 2020","updated_date":null,"description":"As the risk of data misuse is rising, more and more enterprises are trying to comply with current data protection and regulatory enforcement.","title":"How LoginRadius Helps Enterprises Stay CCPA Compliant in 2020","tags":["data privacy","compliance","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/3da77fd0181d28bfc0a067549277a041/7f8e9/ccpa-compliant.webp","srcSet":"/static/3da77fd0181d28bfc0a067549277a041/61e93/ccpa-compliant.webp 200w,\n/static/3da77fd0181d28bfc0a067549277a041/1f5c5/ccpa-compliant.webp 400w,\n/static/3da77fd0181d28bfc0a067549277a041/7f8e9/ccpa-compliant.webp 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"Introduction Social login, also termed as social sign-in or social sign-on, allows your consumers to login and register with a single click…","fields":{"slug":"/identity/what-is-social-login/"},"html":"<h2 id=\"introduction\" style=\"position:relative;\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction</h2>\n<p>Social login, also termed as social sign-in or social sign-on, allows your consumers to login and register with a single click on a website or mobile application using their existing accounts from various social providers. It simplifies the sign-in and <a href=\"https://www.loginradius.com/authentication/\">registration experiences</a>, providing a convenient alternative method to create an account where it is mandatory.</p>\n<ul>\n<li>For consumers, social login is a single-click login method for accessing the website and mobile application—one that there is no need for excess credentials and allows consumers to skip traditional registration methods.</li>\n<li>Social login is an attractive feature for developers and businesses that can help streamline consumer verification while also providing more reliable data access for personalization.</li>\n</ul>\n<h2 id=\"how-does-social-login-work\" style=\"position:relative;\"><a href=\"#how-does-social-login-work\" aria-label=\"how does social login work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Does Social Login Work?</h2>\n<p>You may be thinking about how does social login work? Well, social login is a quick and convenient way for users to log into websites using their existing social media accounts. Instead of creating a new account on the website, users can simply click a button to sign in with their Facebook, Google, or other social media account.</p>\n<p>When a user clicks on the social login button, the website will redirect the user to the chosen social media platform's login page. After the user logs in, the social media platform sends back the user's data to the website. This data can include the user's name, email address, profile picture, and any other information the user has authorized the website to access. Let’s understand more about  login with social media and its aspects. </p>\n<h2 id=\"how-do-popular-social-login-platforms-compare\" style=\"position:relative;\"><a href=\"#how-do-popular-social-login-platforms-compare\" aria-label=\"how do popular social login platforms compare permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Do Popular Social Login Platforms Compare?</h2>\n<p>Some of the most popular social login platforms include Facebook, Google, Twitter, LinkedIn, and Microsoft. Each platform has its own strengths and weaknesses.</p>\n<p>Facebook is the most popular social login platform, with over 2 billion active users worldwide. It provides a wide range of user data, including the user's name, email address, profile picture, and interests.</p>\n<p>Google is also a popular social login platform, with over 1 billion active users. It provides similar data to Facebook, but also allows users to log in with their Google+ account.</p>\n<p>For detailed information about the login preferences, you can <a href=\"https://www.loginradius.com/resource/consumer-digital-identity-trend-report-2022\">download</a> our <strong>Consumer Digital Identity Trend Report 2022.</strong></p>\n<p>Twitter is popular among younger users, but it provides less user data than Facebook or Google. LinkedIn is popular among professionals, and it provides more detailed professional information about the user.</p>\n<h2 id=\"why-should-businesses-use-social-login\" style=\"position:relative;\"><a href=\"#why-should-businesses-use-social-login\" aria-label=\"why should businesses use social login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why Should Businesses Use Social Login?</h2>\n<p>Social login and registration provide benefits in various ways:</p>\n<ul>\n<li>Log in via a third-party web page or Facebook or Google accounts can be done with just a few clicks on the button. This is a much faster way to access the sites and mobile applications than filling out the complete registration form as in traditional login.</li>\n<li>Social login reduces the effort to remember passwords, which means people don’t need to create and keep track of more credentials, lessening password fatigue and login failure.</li>\n</ul>\n<p><a href=\"https://www.google.com/url?q=https://www.loginradius.com/resource/loginradius-single-sign-on/\"><img src=\"/f91644b068ec78e0acdb60c2a9d83004/sso.webp\" alt=\"sso\"></a></p>\n<ul>\n<li>Consumers feel more comfortable sharing the data via the social platform on which they already have trust compared to unknown sites. Social login provides a recognizable, uniform method of account logging.</li>\n<li>Data collection can be automated. Each time a visitor logs in on the site, our APIs retrieve the consumer’s updated profile information.</li>\n</ul>\n<h2 id=\"how-is-social-login-useful-for-business\" style=\"position:relative;\"><a href=\"#how-is-social-login-useful-for-business\" aria-label=\"how is social login useful for business permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How is Social Login Useful for Business?</h2>\n<p>By providing the <a href=\"https://www.loginradius.com/social-login/\">social login on your site</a>, consumers and visitors can experience a better UX/UI. Almost everyone is perpetually logged in on their social accounts, especially to their Facebook and Google accounts, sites, and apps (ecommerce or otherwise).</p>\n<p>The following are a few benefits of social login for businesses:</p>\n<ol>\n<li>Visitors can save time by not requiring them to create yet another profile.</li>\n<li>Increase the chances of converting leads to consumers and speed up the business/sale by doing #1.</li>\n<li>Speed up consumer service and support.</li>\n<li>Data collection of visitors and consumers can be automated to build profiles and personas.</li>\n<li>Personalize the site for visitors and run future promotions using info gathered by doing automation.</li>\n<li>Trust can be created by showing visitors and consumers reviews of your product written by their friends/family on the social network they use to log in.</li>\n<li>Increase reach, generate brand awareness, and build communities by harnessing various social platforms.</li>\n<li>Also, businesses can run loyalty and referral programs with social invites.</li>\n</ol>\n<h2 id=\"how-to-implement-social-login\" style=\"position:relative;\"><a href=\"#how-to-implement-social-login\" aria-label=\"how to implement social login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Implement Social Login?</h2>\n<p>Social Login can be implemented with the following method:</p>\n<ul>\n<li>To implement the social login with the UI’s help, you need to configure the Social Provider. For more information on this, visit : <a href=\"https://www.loginradius.com/docs/authentication/quick-start/social-login/#partconfiguration1\">Social Login Configuration</a>.</li>\n<li>If you want to implement the Social Login with the JS interface’s help, the following URL will help you: <a href=\"https://www.loginradius.com/docs/authentication/quick-start/social-login/#partdeployment4\">Deployment</a>.</li>\n</ul>\n<h2 id=\"what-are-the-benefits-of-social-login\" style=\"position:relative;\"><a href=\"#what-are-the-benefits-of-social-login\" aria-label=\"what are the benefits of social login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What are the Benefits of Social Login?</h2>\n<p>There are several benefits to using social login on your website. First, it provides a convenient and quick way for users to log in without having to create a new account. This can increase conversion rates and reduce the number of abandoned carts or forms.</p>\n<p>Second, social login can help you gather more data about your users. This data can be used to personalize the user experience, send targeted marketing messages, and <a href=\"https://www.loginradius.com/blog/growth/how-customer-retention-can-help-businesses-grow/\">improve customer retention</a>.</p>\n<p>Third, when we talk about social security login, social login can increase the security of your website by reducing the number of passwords users have to remember. Users are more likely to choose weak or easy-to-guess passwords if they have to remember multiple passwords for different websites.</p>\n<h2 id=\"how-to-implement-social-login-and-is-it-worth-implementing\" style=\"position:relative;\"><a href=\"#how-to-implement-social-login-and-is-it-worth-implementing\" aria-label=\"how to implement social login and is it worth implementing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Implement Social Login and Is It Worth Implementing?</h2>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-ciam-social-login/\">Implementing social login</a> on your website is relatively easy, especially if you use a third-party service like LoginRadius. LoginRadius provides a range of social login options, including Facebook, Google, Twitter, LinkedIn, and more.</p>\n<p>To implement social login, you will need to add social login buttons to your website and integrate them with your existing login system. You may also need to make some changes to your website's privacy policy and terms of service.</p>\n<p>Whether or not social login is worth implementing depends on your website and your users. If your website is focused on e-commerce or requires users to log in frequently, social login can be a great way to increase conversion rates and improve user experience. </p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>In this article, we talked about applying a Social Login on consumers websites and how it will enhance businesses. This feature allows consumers to login via social providers and removes the hassle to remember new passwords for different websites. However, before implementing any functionality on a website, analyze and consider the pros and cons from every possible angle.</p>\n<p>Cheers!</p>\n<h2 id=\"faqs\" style=\"position:relative;\"><a href=\"#faqs\" aria-label=\"faqs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>FAQs</h2>\n<p>1.<strong>Which is the most popular social login?</strong></p>\n<p>According to the <a href=\"https://www.loginradius.com/resource/consumer-digital-identity-trend-report-2022\">Consumer Identity Trend Report 2022</a>, 26.84% of users prefer social login. And Facebook login is the most popular social login method. </p>\n<p>2.<strong>What is a social login app?</strong></p>\n<p>Social login enables you to authenticate your users on your website or application using their existing social media profiles on your website or application. The most common login using social media are from platforms, including login include Facebook, Gmail, Instagram, etc. </p>\n<p>3.<strong>What data do you get with social login?</strong></p>\n<p>Social login provides you with a deep insight into your customer behavior and preferences that helps you create personalized customer journeys and aggressive <a href=\"https://www.loginradius.com/blog/growth/advantage-social-login-as-marketer/\">marketing campaigns</a>.</p>\n<p><strong>4. Who uses social login?</strong></p>\n<p>Social login is utilized by websites and applications to allow users to log in using their existing social media accounts.</p>\n<p><strong>5.  How to do social login?</strong></p>\n<p>Users can perform social login by clicking on the respective social media button on the website or application's login page and following the authentication prompts provided by the chosen social media platform.</p>\n<p><strong>6. How to use Facebook for social login?</strong></p>\n<p>Facebook login can be integrated with your website or mobile application for seamless login by using the <a href=\"https://www.loginradius.com/social-login/\">LoginRadius CIAM</a>.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=what-is-social-login\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"book-a-demo-loginradius\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 28, 2020","updated_date":null,"description":"Social login is an attractive feature for developers and businesses that can help streamline consumer verification while also providing more reliable data access for personalization.","title":"What is Social Login?","tags":["social login","identity verification","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/76a63a56c76fb78c41033caa51ea6e75/7f8e9/social-login.webp","srcSet":"/static/76a63a56c76fb78c41033caa51ea6e75/61e93/social-login.webp 200w,\n/static/76a63a56c76fb78c41033caa51ea6e75/1f5c5/social-login.webp 400w,\n/static/76a63a56c76fb78c41033caa51ea6e75/7f8e9/social-login.webp 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Vaibhav Jain","github":null,"avatar":null}}}},{"node":{"excerpt":"The global media and entertainment industry is undergoing a massive transformation at the moment. Interestingly, it is adapting itself to…","fields":{"slug":"/growth/customer-experience-media-entertainment-industry/"},"html":"<p>The global media and entertainment industry is undergoing a massive transformation at the moment. Interestingly, it is adapting itself to improve customer experiences like never before. </p>\n<p>Today, enterprises know that if they want to stay ahead of their competitors, they need to keep their customers happy.</p>\n<p>So, how are they doing it? It's simple. They are focusing on generating more and more customer-centric content.</p>\n<p>2019 (for that matter) experienced an intensifying wave of popularity for on-demand streaming sites like Amazon and Netflix. The recently launched <a href=\"https://www.loginradius.com/press/loginradius-powers-britbox-launch-high-performance-ciam/\">BritBox</a> also primarily focuses on driving better media experience for their customers.</p>\n<p>LoginRadius explores these shifting expectations of the entertainment industry and tries to identify opportunities that are likely to drive popularity in 2020. Let's go through the top highlights.</p>\n<h2 id=\"over-the-top-content-will-take-a-new-turn\" style=\"position:relative;\"><a href=\"#over-the-top-content-will-take-a-new-turn\" aria-label=\"over the top content will take a new turn permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over-The-Top Content Will Take a New Turn</h2>\n<p>Over-the-top (OTT) content in the media industry refers to audio or video streaming services (like Netflix, Youtube, Amazon) that are delivered to customers over the Internet without the involvement of any third party provider (generally cable or satellite providers).</p>\n<p>Of late, the market has been witnessing a boost in mobile computing devices – leading to a disruption in the broadcast television era. It has been creating more opportunities for independent artists to leverage the technology and cast themselves in front of a wider audience.</p>\n<p>These independent artists decide how to use, sell, or distribute their content online. They are solely responsible for offering a more personalized, attention-grabbing, valuable, and relevant experience for their audience.</p>\n<p>Are you wondering how this sudden turn of events will influence the number game?</p>\n<p>According to an estimation by Strategy Analytics, revenue from OTT video in the US alone will exceed the <a href=\"https://www.strategyanalytics.com/strategy-analytics/blogs/tv-media-strategies/2016/03/31/subscription-vod-and-advertising-drive-ott-video-revenue-growth-in-the-u.s#.V7RJmph95hE\">$30 billion mark in 2020</a>.</p>\n<p>These figures grab attention and are hard to ignore.</p>\n<p><img src=\"/a36476c26f48877809631df3e3d3a29e/Identity-blog-graphic-02-1024x709.webp\" alt=\"stats OTT video revenue and forecast\"></p>\n<p>Data source: Strategy analytics OTT video forecast</p>\n<h2 id=\"personalization-will-make-the-media-smarter\" style=\"position:relative;\"><a href=\"#personalization-will-make-the-media-smarter\" aria-label=\"personalization will make the media smarter permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Personalization Will Make the Media Smarter</h2>\n<p>Technology will make deeper connections and drive higher profitability through the personalization of content in the media industry.  </p>\n<p>Expect media houses to focus on creating <strong>smarter content</strong> that connects with audiences on a deeper level.</p>\n<p>Rather than offering free content to the audience in general, with the power of analytics, AI, and machine learning, the media industry will produce more content niches that resonate with viewers.</p>\n<h2 id=\"privacy-regulation-will-rebuild-trust-in-the-media-industry\" style=\"position:relative;\"><a href=\"#privacy-regulation-will-rebuild-trust-in-the-media-industry\" aria-label=\"privacy regulation will rebuild trust in the media industry permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Privacy Regulation Will Rebuild Trust in the Media Industry</h2>\n<p>There is still a constant fear of identity theft, unauthorized use of data, and financial loss among customers. No wonder, data privacy, and security will be the top priority for media companies in 2020. </p>\n<p>Speaking of securing data, the EU's General Data Protection Regulation (GDPR) was the first high profile regulation that the world came across. It rightfully set exemplary standards for media houses (and all organizations in general) and showed how to conduct business and <a href=\"https://www.loginradius.com/blog/2018/03/gdpr-will-affect-companies-use-data-target-customers/\">store customer data</a>. </p>\n<p>Following suit came the <a href=\"https://www.loginradius.com/blog/2019/05/ccpa-introduction/\">California Consumer Privacy Act (CCPA)</a> that officially took effect on January 1, 2020. CCPA, too, is expected to give individuals more control over how their data is being used. </p>\n<p>But will it hit the right chords among organizations and individuals? Only time will tell.</p>\n<p><img src=\"/527cf9c0e564cc722f2a72fc5af2f52f/Identity-blog-graphic-03-1024x709.webp\" alt=\"GDPR and CCPA\"></p>\n<h2 id=\"5-technologies-that-will-impact-user-experience-in-media-and-entertainment-industry\" style=\"position:relative;\"><a href=\"#5-technologies-that-will-impact-user-experience-in-media-and-entertainment-industry\" aria-label=\"5 technologies that will impact user experience in media and entertainment industry permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5 Technologies That Will Impact User Experience in Media and Entertainment Industry</h2>\n<h3 id=\"1-blockchain\" style=\"position:relative;\"><a href=\"#1-blockchain\" aria-label=\"1 blockchain permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>1. Blockchain</strong></h3>\n<p>A market synopsis by America News Hour reports that the global blockchain media industry \"registered 32.94% CAGR during the forecast period between 2018 and 2024,\" and they predict it could reach USD 1.54 billion by 2024.</p>\n<p>So, if you think blockchain is only about cryptocurrency, think again!</p>\n<p>Within the media and entertainment industry, <a href=\"https://www.csoonline.com/article/3279006/4-reasons-blockchain-could-improve-data-security.html\">blockchain can be used to secure data transactions</a> and improve digital advertising efforts.</p>\n<h3 id=\"2-ar-and-vr\" style=\"position:relative;\"><a href=\"#2-ar-and-vr\" aria-label=\"2 ar and vr permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>2. AR and VR</strong></h3>\n<p>Pokémon Go is the <a href=\"https://www.forbes.com/sites/bernardmarr/2020/01/24/the-5-biggest-virtual-and-augmented-reality-trends-in-2020-everyone-should-know-about/#62543f5924a8\">perfect example</a> of a new medium of entertainment that lifts the spirit of AR and VR – leaving users wanting more. The combination of real-world elements in the game is truly immersive and magical.</p>\n<p>With the recent interest in AR and VR from Silicon Valley giants like Google and Facebook, it seems like innovations in mobility, pricing and accessibility are on the cards.</p>\n<p>Be it through story-driven content or experience-driven entertainment. They are expected to boost customer experience in the media industry like never before.</p>\n<h3 id=\"3-voice-search-technology\" style=\"position:relative;\"><a href=\"#3-voice-search-technology\" aria-label=\"3 voice search technology permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>3. Voice Search Technology</strong></h3>\n<p>Innovation in voice search technology is changing how we conduct our day-to-day activities. 2019 was the year of Alexa and Google Home that made <a href=\"https://www.digitaltrends.com/home/google-home-vs-amazon-echo/\">smart homes accessible</a> than ever.</p>\n<p>The combination of AI, machine learning, and advanced analytics will continue to optimize content making customer experiences more personalized, compelling, and transparent.</p>\n<h3 id=\"4-cloud-security-management\" style=\"position:relative;\"><a href=\"#4-cloud-security-management\" aria-label=\"4 cloud security management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>4. Cloud Security Management</strong></h3>\n<p>Cloud security management solutions will be back in the spotlight. The security of data will be a primary area of focus in 2020. Factors like data encryption and cloud workload security will take center stage as more and more media houses migrate to the cloud in the public environment.</p>\n<h3 id=\"5-facial-recognition\" style=\"position:relative;\"><a href=\"#5-facial-recognition\" aria-label=\"5 facial recognition permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>5. Facial Recognition</strong></h3>\n<p>Facial Recognition is swiftly turning into one of the most common forms of biometric authentication. The use of facial recognition in digital advertising and the media industry will <a href=\"https://www.gemalto.com/govt/inspired/biometrics\">continue to grow</a>. </p>\n<p>For instance, it will identify individuals in-store and offer purchasing recommendations based on their demographic.</p>\n<p><img src=\"/0b4c1f06d7553616abc8034bc5741468/image4.webp\"></p>\n<h2 id=\"how-will-ciam-solutions-gain-momentum-in-the-media-and-entertainment-industry\" style=\"position:relative;\"><a href=\"#how-will-ciam-solutions-gain-momentum-in-the-media-and-entertainment-industry\" aria-label=\"how will ciam solutions gain momentum in the media and entertainment industry permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How will CIAM solutions gain momentum in the media and entertainment industry?</h2>\n<p><a href=\"https://www.loginradius.com/blog/2019/06/customer-identity-and-access-management\">Customer identity and access management (CIAM) solutions</a> will help companies in the media and entertainment industry understand their customer base and offer them a unique and engaging experience.</p>\n<p>As we enter 2020, here's what businesses can expect from a CIAM solution. </p>\n<h3 id=\"increase-in-subscription-rates\" style=\"position:relative;\"><a href=\"#increase-in-subscription-rates\" aria-label=\"increase in subscription rates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Increase in subscription rates.</strong></h3>\n<p>One of the biggest benefits of online media content is that it's available in different formats across multiple platforms. However, users dislike logging in to various platforms or filling in multiple registration forms. This can lead to abandonment or customer churn.</p>\n<p>By implementing <a href=\"https://www.loginradius.com/blog/2019/05/what-is-single-sign-on/\">Single Sign-On</a> (SSO), media houses can create a connected user experience across all its platforms. Viewers can access multiple channels using a single identity, and turn more visitors into subscribers.</p>\n<h3 id=\"creation-of-relevant-content-with-user-profiling\" style=\"position:relative;\"><a href=\"#creation-of-relevant-content-with-user-profiling\" aria-label=\"creation of relevant content with user profiling permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Creation of relevant content with user profiling.</strong></h3>\n<p>The digitization of media content has also changed the way companies earn revenue. Mostly, customers are looking for content that appeals to their interests and habits. A CIAM solution can help media platforms achieve that.</p>\n<p>A <a href=\"https://www.loginradius.com/blog/identity/perfect-ciam-platform/\">CIAM platform like LoginRadius</a> can record the preferences of their audience in unified customer profiles and generate relevant content.</p>\n<p><a href=\"https://www.loginradius.com/resource/how-media-and-publication-companies-use-loginradius-identity-platform/\"><img src=\"/53ec119e66ccdf195d25e795badfc82b/image5.webp\" alt=\"media and publication data sheet loginraidus\"></a></p>\n<h3 id=\"frictionless-customer-interaction\" style=\"position:relative;\"><a href=\"#frictionless-customer-interaction\" aria-label=\"frictionless customer interaction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><strong>Frictionless customer interaction.</strong></h3>\n<p>Audiences are no longer passive consumers. Instead, they are actively engaged in the content they read, watch, and even produce it themselves.</p>\n<p>LoginRadius’ industry-leading peak load capabilities, makes it an ideal CIAM provider for companies dealing with large amounts of customer engagement in a short period.</p>\n<h3 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h3>\n<p>With a large scale roll-out of the technology, 2020 promises to be the year of digital transformation in the media and entertainment industry.</p>\n<p>Amidst the ever-changing regulatory landscape, there are high chances that new opportunities are waiting to be capitalized. <em>Now</em> is your chance to reap the benefits.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=customer-experience-media-entertainment-industry\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 25, 2020","updated_date":null,"description":"The worldwide media and entertainment industry is going through a huge transformation at the moment. 2020 aims to be the year of digital change in the media and entertainment sector with a large-scale roll-out of technology.","title":"Digital Trends Transforming the Media and Entertainment Industry in 2020","tags":["digital transformation","ciam solution","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/735505ee6f15bc08ee45906dd6a78b64/7f8e9/media-industry.webp","srcSet":"/static/735505ee6f15bc08ee45906dd6a78b64/61e93/media-industry.webp 200w,\n/static/735505ee6f15bc08ee45906dd6a78b64/1f5c5/media-industry.webp 400w,\n/static/735505ee6f15bc08ee45906dd6a78b64/7f8e9/media-industry.webp 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"This blog is a short guide on implementing AWS Lambda and SQS together. First we’ll introduce these technologies and explain why they work…","fields":{"slug":"/engineering/working-with-aws-lambda-and-sqs/"},"html":"<p>This blog is a short guide on implementing AWS Lambda and SQS together. First we’ll introduce these technologies and explain why they work well together, then walkthrough some configurations and invocation using a simple Nodejs script.</p>\n<p><img src=\"/ee2d9bd3978930dc685480ceac45286e/blog-aws-lambda-sqs-1.webp\"></p>\n<p><strong>What are they?</strong>\nAWS Lambda is a popular choice in serverless computing. As an event-driven platform, AWS Lambda requires users to configure event sources in order to run a function. Their built-in support for many AWS services like S3 and SQS as event sources allow for relatively simple configuration. Note that Lambda functions can also be triggered via HTTP(S) by using AWS API Gateway service.</p>\n<p>AWS SQS (Simple Queue Service) is a queue service with 2 types: standard and FIFO. The major difference is that standard queues guarantee “at-least once” delivery of its messages, while FIFO queues guarantee “exactly-once” delivery. FIFO queues, however, provide lower maximum throughput than standard.</p>\n<p>As previously mentioned, AWS SQS can be an event source for AWS Lambda. This means that when a message is added to the queue, the configured Lambda function will be invoked with an event containing this message.</p>\n<p><img src=\"/5e7303903f14f7a18b0b90dd5b9a194f/blog-aws-lambda-sqs-2.webp\"></p>\n<p><strong>But why use them together?</strong><br>\nCommon reasons include better handling Lambda function invocations and errors. For function invocations, the default concurrency limit is 1000. If a function has reached this limit, any additional invocations will fail with a throttling error. However, with SQS as an event source, events resulting in throttling errors are automatically retried based on set configs. This prevents the loss of events due to unexpected jumps in usage. Additionally, dead-letter queues (DLQ) can be configured as a place where failed events go, to avoid retrying indefinitely. Failed events in DLQ can then be sent somewhere like a DB for analysis.</p>\n<p>One limitation for many use cases was the “at-least once” delivery model of events with standard queues. Essentially, there was no guarantee that an event will only be delivered once to a consuming Lambda function. In cases where each event can strictly only be processed once, one would have to employ various strategies resulting in higher overhead and complexity. But, this is no longer an issue because recently the AWS team added support for FIFO queues as event sources to Lambda functions.</p>\n<p><strong>Walkthrough</strong><br>\nLet’s set up a basic “Hello World” application with SQS and Lambda.</p>\n<p>1. Starting with SQS, add a standard queue.</p>\n<p>2. Now, add a Lambda function:</p>\n<p><img src=\"/ef2b599ea14dbf5ffd11d05abefad149/blog-aws-lambda-sqs-3-1024x447.webp\"></p>\n<p>3. Create a new execution role with the following configs:<br>\na. Trusted Entity: Lambda<br>\nb. Permissions: AWSLambdaBasicExecutionRole; AWSLambdaSQSQueueExecutionRole</p>\n<p><img src=\"/5362ac9bedede42c761b07d67c387ed2/blog-aws-lambda-sqs-4.webp\"></p>\n<p>4. Use newly created role in Lambda function. Remember to save (top right).</p>\n<p><img src=\"/b722125958d83a73928cc26a9b9abfb0/blog-aws-lambda-sqs-5.webp\"></p>\n<p>5. Add a trigger:<br>\na. Batch size set to 1, so the Lambda Function will process 1 message at a time.</p>\n<p><img src=\"/09222801a7c08c6f77517d32730b5b95/blog-aws-lambda-sqs-6.webp\"></p>\n<p>6. Programmatically enqueue a message into SQS with the following code in Nodejs:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">AWS</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;aws-sdk&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">AWS</span><span class=\"mtk1\">.</span><span class=\"mtk12\">config</span><span class=\"mtk1\">.</span><span class=\"mtk11\">update</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">region:</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_REGION</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  accessKeyId: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_ACCESS_KEY_ID</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  secretAccessKey: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SECRET_ACCESS_KEY</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">const sqs = new AWS.SQS(</span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">apiVersion</span><span class=\"mtk1\">: </span><span class=\"mtk8\">&quot;2012-11-05&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">}</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">sqs.sendMessage(</span><span class=\"mtk4\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">MessageBody</span><span class=\"mtk1\">: </span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">({</span><span class=\"mtk12\">hello:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;world&quot;</span><span class=\"mtk1\">}),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">QueueUrl</span><span class=\"mtk1\">: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_URL</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}, (err, data) =&gt; (err) ? console.log(&quot;Error&quot;, err) : console.log(&quot;Success&quot;, data.MessageId));</span></span></code></pre>\n<p>a. Create package.json with `npm init`<br>\nb. Install aws sdk dependency with `npm i aws-sdk --save`<br>\nc. Fill in your specific AWS account details. Find AWS_SQS_URL by selecting the queue you created, while AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY require creating a new IAM user with programmatic access. This user also needs permission to push messages into SQS.<br>\nd. Run script with `node app.js`<br>\ne. Navigate to Monitoring tab in your Lambda function, the invocations graph should have a new data point (may take a few minutes to update).</p>\n<p><img src=\"/9fb817ec026be608972f6f9df8836011/blog-aws-lambda-sqs-7.webp\"></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"February 13, 2020","updated_date":null,"description":null,"title":"Working with AWS Lambda and SQS","tags":["Engineering","General"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":2.127659574468085,"src":"/static/ee2d9bd3978930dc685480ceac45286e/b594c/blog-aws-lambda.webp","srcSet":"/static/ee2d9bd3978930dc685480ceac45286e/61e93/blog-aws-lambda.webp 200w,\n/static/ee2d9bd3978930dc685480ceac45286e/1f5c5/blog-aws-lambda.webp 400w,\n/static/ee2d9bd3978930dc685480ceac45286e/b594c/blog-aws-lambda.webp 448w","sizes":"(max-width: 448px) 100vw, 448px"}}},"author":{"id":"Team LoginRadius","github":"LoginRadius","avatar":null}}}},{"node":{"excerpt":"In this blog, we’ll be implementing  OAuth in node js application via Google. For this, we’ll be using Passport.js, an authentication…","fields":{"slug":"/engineering/google-authentication-with-nodejs-and-passportjs/"},"html":"<p>In this blog, we’ll be implementing  OAuth in node js application via Google. For this, we’ll be using <a href=\"http://www.passportjs.org/\">Passport.js</a>, an authentication package for Node.js. Here’s a quick guide on implementing OAuth 2.0 in node js​. </p>\n<h2 id=\"before-you-get-started\" style=\"position:relative;\"><a href=\"#before-you-get-started\" aria-label=\"before you get started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Before You Get Started</h2>\n<p>This tutorial assumes you have:</p>\n<ul>\n<li>Basic knowledge of HTML/CSS</li>\n<li>A good understanding of JavaScript and Node.js</li>\n<li>Latest Node.js version installed on your system</li>\n</ul>\n<h3 id=\"step-1-create-a-google-client-id-and-client-secret\" style=\"position:relative;\"><a href=\"#step-1-create-a-google-client-id-and-client-secret\" aria-label=\"step 1 create a google client id and client secret permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 1: Create a Google client ID and client secret</h3>\n<p>We can create a client ID and client secret using its <a href=\"https://console.developers.google.com/\">Google API Console</a>. You need to follow below steps once you open Google Auth API Console </p>\n<ul>\n<li>From the project drop-down, select an existing project, or create a new one by selecting Create a new project</li>\n<li>In the sidebar under \"APIs &#x26; Services\", select Credentials</li>\n<li>In the Credentials tab, select the Create credentials drop-down list, and choose OAuth client ID.</li>\n<li>Under Application type, select Web application.</li>\n<li>In Authorized redirect URI use <code>http://localhost:3000/auth/google/callback</code></li>\n<li>Press the Create button and copy the generated client ID and client secret</li>\n</ul>\n<p><strong>Note:</strong> If Google doesn't support <code>http://localhost:3000</code>, then use <code>http://127.0.0.1:3000</code></p>\n<h3 id=\"step-2-initialize-a-nodejs-project-with-all-the-dependencies\" style=\"position:relative;\"><a href=\"#step-2-initialize-a-nodejs-project-with-all-the-dependencies\" aria-label=\"step 2 initialize a nodejs project with all the dependencies permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 2: Initialize a node.js project with all the dependencies</h3>\n<p>To create OAuth nodejs authentication, first in an empty folder run the below command</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">npm init</span></code></pre>\n<p>It essentially just creates the package.json file with all the basic information you will provide. after that, we will install all the dependencies needed in our project </p>\n<ul>\n<li><strong>express:</strong>  Node.js framework to create a server and accept requests</li>\n<li><strong>ejs:</strong>  To render HTML pages for login and profile</li>\n<li><strong>express-session:</strong>  To save information from google in session and use it on the success page</li>\n<li><strong>passport:</strong> Social Authentication package for Node.js</li>\n<li><strong>passport-google-oauth:</strong>  Google authentication module by Passport.js</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">npm install express ejs express-session passport passport-google-oauth --save</span></code></pre>\n<h3 id=\"step-3-writing-express-server-code-to-accept-web-requests\" style=\"position:relative;\"><a href=\"#step-3-writing-express-server-code-to-accept-web-requests\" aria-label=\"step 3 writing express server code to accept web requests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3: Writing express server code to accept web requests</h3>\n<p>Create a file <strong>index.js</strong> in the root folder of your app and add the following code: </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  EXPRESS */</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">express</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;express&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">app</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">express</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">session</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;express-session&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">set</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;view engine&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;ejs&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk11\">session</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">resave:</span><span class=\"mtk1\"> </span><span class=\"mtk4\">false</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">saveUninitialized:</span><span class=\"mtk1\"> </span><span class=\"mtk4\">true</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">secret:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;SECRET&#39;</span><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}));</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">render</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;pages/auth&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">port</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">PORT</span><span class=\"mtk1\"> || </span><span class=\"mtk7\">3000</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">listen</span><span class=\"mtk1\">(</span><span class=\"mtk12\">port</span><span class=\"mtk1\"> , () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">log</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;App listening on port &#39;</span><span class=\"mtk1\"> + </span><span class=\"mtk12\">port</span><span class=\"mtk1\">));</span></span></code></pre>\n<p>Our web server has been set up, now we will add the code related to the passport at the bottom of the <strong>index.js</strong> file:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  PASSPORT SETUP  */</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">passport</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;passport&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">var</span><span class=\"mtk1\"> </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">initialize</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">session</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">set</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;view engine&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;ejs&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/success&#39;</span><span class=\"mtk1\">, (</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">send</span><span class=\"mtk1\">(</span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/error&#39;</span><span class=\"mtk1\">, (</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">send</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;error logging in&quot;</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">serializeUser</span><span class=\"mtk1\">(</span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">user</span><span class=\"mtk1\">, </span><span class=\"mtk12\">cb</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">cb</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">user</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">deserializeUser</span><span class=\"mtk1\">(</span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">obj</span><span class=\"mtk1\">, </span><span class=\"mtk12\">cb</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">cb</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">obj</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span></code></pre>\n<p>Now, at last, we are ready to implement Google Authentication in our app, Add the following code at the bottom of your <strong>index.js</strong> file, use your client Id and Secret instead of placeholders:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  Google AUTH  */</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GoogleStrategy</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;passport-google-oauth&#39;</span><span class=\"mtk1\">).</span><span class=\"mtk12\">OAuth2Strategy</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_ID</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;our-google-client-id&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_SECRET</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;our-google-client-secret&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">GoogleStrategy</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">clientID:</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_ID</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">clientSecret:</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_SECRET</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">callbackURL:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;http://localhost:3000/auth/google/callback&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  },</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">accessToken</span><span class=\"mtk1\">, </span><span class=\"mtk12\">refreshToken</span><span class=\"mtk1\">, </span><span class=\"mtk12\">profile</span><span class=\"mtk1\">, </span><span class=\"mtk12\">done</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">=</span><span class=\"mtk12\">profile</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk11\">done</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/auth/google&#39;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">authenticate</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;google&#39;</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">scope :</span><span class=\"mtk1\"> [</span><span class=\"mtk8\">&#39;profile&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;email&#39;</span><span class=\"mtk1\">] }));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/auth/google/callback&#39;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">authenticate</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;google&#39;</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">failureRedirect:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;/error&#39;</span><span class=\"mtk1\"> }),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk3\">// Successful authentication, redirect success.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">redirect</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/success&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  });</span></span></code></pre>\n<p><strong>Note:</strong> The callback URL should be the same as used in the google app configuration.</p>\n<h3 id=\"step-4-creating-a-login-and-profile-page\" style=\"position:relative;\"><a href=\"#step-4-creating-a-login-and-profile-page\" aria-label=\"step 4 creating a login and profile page permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 4: Creating a Login and Profile page</h3>\n<p>Create an ejs file under path <strong>views/pages/auth.js</strong>, it will render into a nice looking social login page:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!-- </span><span class=\"mtk12\">views</span><span class=\"mtk1\">/</span><span class=\"mtk12\">pages</span><span class=\"mtk1\">/</span><span class=\"mtk12\">auth</span><span class=\"mtk1\">.</span><span class=\"mtk12\">ejs</span><span class=\"mtk1\"> --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!</span><span class=\"mtk12\">doctype</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Google SignIn</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        body        </span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">padding</span><span class=\"mtk1\">-</span><span class=\"mtk12\">top</span><span class=\"mtk1\">:70</span><span class=\"mtk12\">px</span><span class=\"mtk1\">; </span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;container&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;jumbotron text-center text-primary&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-lock&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> Social Authentication</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Login or Register with:</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">a</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/auth/google&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;btn btn-danger&quot;</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-google&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> SignIn with Google</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">a</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span></span></code></pre>\n<p>After it we wll create an ejs file under path <strong>views/pages/success.js</strong>, it will be used to show the user profile information we will get after authenticated by google</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!-- </span><span class=\"mtk12\">views</span><span class=\"mtk1\">/</span><span class=\"mtk12\">success</span><span class=\"mtk1\">.</span><span class=\"mtk12\">ejs</span><span class=\"mtk1\"> --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!</span><span class=\"mtk12\">doctype</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Google SignIn</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> &lt;!-- load bootstrap css --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> &lt;!-- load fontawesome --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          body        </span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">padding</span><span class=\"mtk1\">-</span><span class=\"mtk12\">top</span><span class=\"mtk1\">:70</span><span class=\"mtk12\">px</span><span class=\"mtk1\">; </span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;container&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;jumbotron&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">h1</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;text-primary  text-center&quot;</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-user&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> Profile Information</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;row&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;col-sm-6&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;well&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Id</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.id %&gt;</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Email</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.emails[0].value %&gt;</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Name</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.displayName %&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span></span></code></pre>\n<p><strong>Note:</strong> Here we are also using bootstrap and font-awesome css to make our web pages look good. </p>\n<p>We have finished building our social login page, let's run the application by below command</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"js\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">node</span><span class=\"mtk1\"> </span><span class=\"mtk12\">index</span><span class=\"mtk1\">.</span><span class=\"mtk12\">js</span></span></code></pre>\n<p>Once our server is running, we can see our social login page on <code>http://localhost:3000/</code></p>\n<p><img src=\"/93be682112bc04e8f34b5d19a11257c4/social_login.webp\" alt=\"Social Authentication Page\" title=\"Social Authentication Page\"></p>\n<p>We need to click on <strong>SignIn with Google button</strong>, which will redirect us to the google login page.</p>\n<p><img src=\"/6db1545bee5e34124e225af45e79bdbb/google_login.webp\" alt=\"Google Login\" title=\"Google Login\"></p>\n<p>After login with our google credentials, it will redirect back to our application and on the success page, we can see the details of the logged-in user and can save this detail in a database for future use also.</p>\n<p><img src=\"/f1f8df6035ac3d150544a16b3d1d07a3/profileinfo_google.webp\" alt=\"Social Profile Info\" title=\"Social Profile Info\"></p>\n<p>As we have seen it is fairly easy to build a google social authentication system with Node.js and Passport.js, You can found the complete code used in this tutorial on our <a href=\"https://github.com/LoginRadius/engineering-blog-samples/tree/master/NodeJs/GoogleAuthenticationPassport\">Github Repo</a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk17 { color: #808080; }\n</style>","frontmatter":{"date":"February 12, 2020","updated_date":null,"description":"Learn how to implement Google OAuth2 Authentication in NodeJS using Passport","title":"Google OAuth2 Authentication in NodeJS - A Guide to Implementing OAuth in Node.js","tags":["NodeJs","SocialLogin","Oauth"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3071895424836601,"src":"/static/af2ca4c70d0c3c2c4c6726e14a1b25ad/e9589/google_cover.webp","srcSet":"/static/af2ca4c70d0c3c2c4c6726e14a1b25ad/61e93/google_cover.webp 200w,\n/static/af2ca4c70d0c3c2c4c6726e14a1b25ad/1f5c5/google_cover.webp 400w,\n/static/af2ca4c70d0c3c2c4c6726e14a1b25ad/e9589/google_cover.webp 500w","sizes":"(max-width: 500px) 100vw, 500px"}}},"author":{"id":"Puneet Singh","github":"puneetsingh24","avatar":null}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},"pageContext":{"limit":6,"skip":816,"currentPage":137,"type":"///","numPages":164,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}