首页 > 其他分享 >谷歌登录

谷歌登录

时间:2024-08-08 21:18:37浏览次数:6  
标签:google const log 登录 App 谷歌 react import

//Npm
npm install @react-oauth/google@latest
//Yarn
yarn add @react-oauth/google@latest

在首页中引入 GoogleOAuthProvider,并写上google后台的clientId
/*index.js*/

import React from 'react';
import ReactDOM from 'react-dom';
import { GoogleOAuthProvider } from '@react-oauth/google';
import App from './App';

ReactDOM.render(
    <GoogleOAuthProvider clientId="386932037035-k8v833noqjk7m4***********.apps.googleusercontent.com">
        <React.StrictMode>
            <App />
        </React.StrictMode>
    </GoogleOAuthProvider>,
    document.getElementById('root')
);


组件页面中
/*App.js*/

import React from 'react';
import { GoogleLogin } from '@react-oauth/google';

function App() {
    const responseMessage = (response) => {
        console.log(response);
    };
    const errorMessage = (error) => {
        console.log(error);
    };
    return (
        <div>
            <h2>React Google Login</h2>
            <br />
            <br />
            <GoogleLogin onSuccess={responseMessage} one rror={errorMessage} />
        </div>
    )
}
export default App;

也可以更改谷歌登录样式
/*App.js*/

import React, { useState, useEffect } from 'react';
import { googleLogout, useGoogleLogin } from '@react-oauth/google';
import axios from 'axios';

function App() {
    const [ user, setUser ] = useState([]);
    const [ profile, setProfile ] = useState([]);

    const login = useGoogleLogin({
        onSuccess: (codeResponse) => setUser(codeResponse),
        one rror: (error) => console.log('Login Failed:', error)
    });

    useEffect(
        () => {
            if (user) {
                axios
                    .get(`https://www.googleapis.com/oauth2/v1/userinfo?access_token=${user.access_token}`, {
                        headers: {
                            Authorization: `Bearer ${user.access_token}`,
                            Accept: 'application/json'
                        }
                    })
                    .then((res) => {
                        setProfile(res.data);
                    })
                    .catch((err) => console.log(err));
            }
        },
        [ user ]
    );

    // log out function to log the user out of google and set the profile array to null
    const logOut = () => {
        googleLogout();
        setProfile(null);
    };

    return (
        <div>
            <h2>React Google Login</h2>
            <br />
            <br />
            {profile ? (
                <div>
                    <img src={profile.picture} alt="user image" />
                    <h3>User Logged in</h3>
                    <p>Name: {profile.name}</p>
                    <p>Email Address: {profile.email}</p>
                    <br />
                    <br />
                    <button onClick={logOut}>Log out</button>
                </div>
            ) : (
                <button onClick={login}>Sign in with Google 

标签:google,const,log,登录,App,谷歌,react,import
From: https://www.cnblogs.com/xiaoyaoweb/p/18349758

相关文章

  • keycloak~关于社区登录的过程说明
    keycloak将第三方登录(社区登录)进行了封装,大体主要会经历以下三个过程:打开社区认证页面,输入账号密码或者扫码,完成社区上的认证由社区进行302重定向,回到keycloak页面keycloak与社区完成一次oauth2授权码认证,通过社区返回的code来获取token,再通过token来获取社区上的用户信息,在这......
  • 详细分析帆软后台单点登录的配置事项(图文分析)
    目录前言1.插件安装2.模版认证3.单点登录以及加密4.测试前言帆软的文档,推荐阅读:帆软官网文档-单点阅读更多的知识点从帆软学习,以下文章只是做一个踩坑排查,以图文更好的展示为了保证安全,后端做用户的加密是最好的方式,从而实现无感登录与自身第三方平台......
  • uniapp | vue2 实现用户登录 记住账号密码 功能(附Demo)
    目录前言1.uniapp2.vue2前言文中分为两个方面,一个是uniapp小程序,一个是vue2前端(vue3其实同理,只不过格式稍有不同而已)初始界面(以vue2的界面为例)加入按钮之后,界面如下:1.uniapp整一个按钮框:<!-- 记住账号密码--><viewclass="remember-psw-container">......
  • 登录优化------修改密码后,旧的令牌应该失效
    我们以前使用的令牌,修改密码后,旧的令牌仍然可以使用,相当于仍然可以使用旧密码“登录”这很危险。这时候需要使用redis让旧令牌主动失效。实现思路:借助redis,当用户登录成功之后,依然需要生成令牌,但这个令牌它在响应给浏览器的同时也需要往redis中存储一份。当浏览器携带着令......
  • 谷歌统计接入
    一、要在go-zero项目中接入谷歌统计插件(GoogleAnalytics),你可以按照以下步骤操作:注册GoogleAnalytics账号并获取跟踪ID:访问https://analytics.google.com/并使用你的Google账户登录在你的go-zero项目中添加中间件来集成GoogleAnalytics:packagemiddlewareimport......
  • 微信小程序-手机验证码短信登录接口(防薅方法)
    前言开发的小程序手机号短信验证码登录这一个功能,入参只有手机号。结局盗刷、恶意刷。解决方案1.nginx只允许referer是小程序来源的请求#你的接口location^~/api/{if($http_referer!~*"^https://servicewechat.com/【你的小程序appid】/\d+/page-fram......
  • ssh 远程登录报错:Unable to negotiate with IP port 22: no matching host key type f
    最近在Mac上想要远程一台Linux服务器,结果不知怎么的就不能使用以前的ssh登录了iot@ios-iMac~%[email protected]:nomatchinghostkeytypefound.Theiroffer:ssh-rsa,ssh-dss ......
  • Linux服务器SSH远程密钥免密登录
    说明业务场景中经常需要进行跨服务器的操作,即从一台服务器上登录到另外一台服务器,默认情况下,SSH远程登录时需要输入远程服务器密码。当需要在可信任的服务器之间进行频繁或自动化的操作时,输入密码就会带来不便。本文介绍如何实现SSH远程免密登录。服务器信息假设有2台服......
  • 【验证码逆向专栏】某安登录流程详解与验证码逆向分析与识别
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......
  • CVE-2023-0562银行储物柜管理系统登录页面sql注入漏洞靶场复现
    在PHPGurukul银行储物柜管理系统1.0中发现了一个漏洞。它被评定为临界状态。受此问题影响的是组件登录的文件index.php的一些未知功能。对参数username的操作会导致sql注入。攻击可能是远程发起的。该漏洞已被公开,并可能被利用。此漏洞的标识符是VDB-219716。抓登录包放salmap......