如何为网站配置Google OAuth登陆

https://console.cloud.google.com/
注意要点击红框中的“Select a project”,这样才能出现“New project”的按钮

在弹出的选择框里选择“New project”

设置project名字,Location可以不设置,也可以新建一个organization

进入OAuth设置页面

  • 在“OAuth 2.0 Client IDs”中创建一个“Web application”类型的客户端 ID

  • 填写以下两个关键配置:

1. Authorized JavaScript origins

  • 这是前端运行的网页域名(含协议)

  • 用于前端的 JS SDK 安全校验

开发阶段填写:
http://localhost:3000

如果你后续部署到生产环境,比如 https://example.com,这里也要加上(点击 Add URI):

https://example.com

2. Authorized redirect URIs

  • 是你请求登录后,Google 登录完成会跳转回你网站的地址

  • 这个地址会带上参数(比如 code 或 id_token

  • 通常是你网站前端或后端处理登录回调的路由

开发阶段示例:

假设你用的是前端库(比如 react-google-login)并设置了回调路径 /auth/callback

http://localhost:3000/auth/callback

如果你是用后端(如 Node.js/Express)处理登录,也填后端监听的 URI,比如:

http://localhost:3000/api/auth/google/callback

⚠️ 注意:必须和你实际跳转的回调路径一模一样

设置完毕后,点击Create,会产生对应的Client ID,详见下图

获取凭据

创建后你会得到:

- Client ID (类似: 123456789-abc123def456.apps.googleusercontent.com)

- Client Secret (类似: GOCSPX-abc123def456ghi789)

如果找不到,也可以从Clients的菜单进入重新获取

获取Client secret:

更新环境变量

将Client ID和Client secret更新到环境变量里(.env.local)文件

# Google Auth

AUTH_GOOGLE_ID="你的实际Client ID"

AUTH_GOOGLE_SECRET="你的实际Client Secret"

NEXT_PUBLIC_AUTH_GOOGLE_ID="你的实际Client ID"

NEXT_PUBLIC_AUTH_GOOGLE_ENABLED="true"

NEXT_PUBLIC_AUTH_GOOGLE_ONE_TAP_ENABLED="false"

这样就可以进行调试了。

要上线的时候,将对应的url换成线上网站的url即可。

### Python OAuth2 单点登录实现 为了实现在Python中的OAuth2单点登录功能,可以利用`requests-oauthlib`库来简化流程处理。下面展示了一个基本的应用实例,该应用通过Google作为身份提供商完成用户的认证过程。 #### 安装依赖包 首先安装必要的软件包: ```bash pip install requests_oauthlib flask ``` #### Flask Web App集成OAuth2 SSO 创建Flask web应用程序并配置环境变量以存储客户端ID和秘密密钥等敏感数据[^2]。 ```python import os from flask import Flask, redirect, url_for, session from requests_oauthlib import OAuth2Session app = Flask(__name__) app.secret_key = 'your_secret_key' # Google OAUTH Config GOOGLE_CLIENT_ID = "YOUR_GOOGLE_CLIENT_ID.apps.googleusercontent.com" GOOGLE_CLIENT_SECRET = "YOUR_GOOGLE_CLIENT_SECRET" REDIRECT_URI = '/oauth2callback' # one of the Redirect URIs from Google APIs console @app.route('/') def index(): """Homepage.""" return '<a href="/login">Login with Google</a>' @app.route('/login') def login(): google = OAuth2Session(GOOGLE_CLIENT_ID, scope=['profile', 'email'], redirect_uri=REDIRECT_URI) authorization_url, state = google.authorization_url( 'https://accounts.google.com/o/oauth2/auth', access_type="offline", prompt="select_account") session['oauth_state'] = state return redirect(authorization_url) @app.route(REDIRECT_URI) def callback(): google = OAuth2Session(GOOGLE_CLIENT_ID, state=session['oauth_state']) token = google.fetch_token( 'https://accounts.google.com/o/oauth2/token', client_secret=GOOGLE_CLIENT_SECRET, authorization_response=request.url) user_info = google.get('https://www.googleapis.com/oauth2/v1/userinfo').json() session['user_email'] = user_info['email'] return f"Logged in as {session['user_email']}<br><a href='/'>Return to homepage</a>" if __name__ == '__main__': app.run(debug=True) ``` 这段代码展示了如何构建一个简单的Web服务器,并实现了与GoogleOAuth2交互逻辑。当用户点击主页上的链接时,会被重定向至Google进行身份验证;成功返回后,则会显示已登录的信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值