uniapp 安卓端谷歌登录如何获取access token
在uniapp开发安卓应用时,如何通过谷歌登录获取access token?我按照官方文档集成了谷歌登录SDK,但回调只返回了idToken和userInfo,没有拿到access token。请问需要额外配置什么参数或权限吗?具体实现代码该如何修改?
2 回复
在uniapp中,安卓端谷歌登录获取access_token需使用uni.login的provider为"google"。登录成功后,在success回调中可获取access_token。示例代码:
uni.login({
provider: 'google',
success: function(res) {
console.log(res.authResult.access_token);
}
});
注意:需在manifest.json中配置google登录权限和AppID。
在 UniApp 中,安卓端实现谷歌登录并获取 access token 的步骤如下:
1. 准备工作
- 在 Google Cloud Console 创建项目并配置 OAuth 2.0 凭据。
- 获取
client_id(Web 应用类型,不是安卓应用类型,因为 UniApp 使用 Google JavaScript 库)。
2. 安装插件
使用 UniApp 官方推荐的 uni-login 或其他支持谷歌登录的插件(如 @dcloudio/uni-login)。
3. 代码示例
// 在页面或组件中引入插件(具体根据插件文档)
// 例如使用 uni-login
export default {
methods: {
googleLogin() {
// 调用谷歌登录
uni.login({
provider: 'google',
success: (loginRes) => {
// 登录成功,loginRes 包含授权码或 access token
console.log('登录成功:', loginRes);
// 通常返回的是授权码(code),需通过后端交换 access token
const authCode = loginRes.code;
// 将 authCode 发送到你的服务器,由服务器通过 Google OAuth 2.0 接口获取 access token
// 示例:uni.request 发送 authCode 到后端
uni.request({
url: 'https://your-server.com/exchange-token', // 替换为你的后端接口
method: 'POST',
data: {
code: authCode
},
success: (res) => {
// 后端返回 access token
const accessToken = res.data.access_token;
console.log('Access Token:', accessToken);
// 存储或使用 access token
},
fail: (err) => {
console.error('获取 token 失败:', err);
}
});
},
fail: (err) => {
console.error('谷歌登录失败:', err);
}
});
}
}
}
4. 后端处理
- 前端获取授权码后,需通过后端调用 Google OAuth 2.0 接口(
https://oauth2.googleapis.com/token)交换 access token,避免在前端暴露client_secret。 - 后端请求示例(使用 Node.js):
const axios = require('axios'); const data = { code: authCode, // 前端传来的授权码 client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', redirect_uri: 'YOUR_REDIRECT_URI', // 需与 Cloud Console 中配置一致 grant_type: 'authorization_code' }; const response = await axios.post('https://oauth2.googleapis.com/token', data); const accessToken = response.data.access_token;
注意事项
- 安全:不要在前端存储
client_secret,始终通过后端交换 token。 - 配置:确保 Google Cloud Console 中的 OAuth 2.0 凭据已添加你的应用包名和 SHA-1 指纹(安卓端)。
- 测试:在本地或真机调试时,使用 Google 提供的测试账号。
如果遇到问题,检查 UniApp 插件文档或 Google OAuth 2.0 文档以获取更新信息。

