app-oauth-google.md 3.0 KB
Newer Older
DCloud-yyl's avatar
DCloud-yyl 已提交
1 2 3 4 5 6
### 开通  
- 注册[Google](https://accounts.google.com/)账号  
- 登录[Google Cloud Platform](https://console.cloud.google.com/),打开“选择项目”界面选择已经创建的项目,如果没有创建项目,点击“新建项目”根据页面提示创建项目  
- 在左侧导航栏中选择 “API和服务” -> “凭证” 打开管理页面
- 点击 “创建凭证” -> “OAuth客户端ID”,根据提示选择“应用类型”,按需分别输入Android/iOS平台配置信息
- 创建凭证后iOS平台可以获取客户端ID(Android平台不需要客户端ID)
D
DCloud_LXH 已提交
7

DCloud_iOS_WZT's avatar
DCloud_iOS_WZT 已提交
8
更多信息详见 [申请开通Google登录操作指南](https://uniapp.dcloud.io/app-oauth-google-open)  
D
DCloud_LXH 已提交
9 10


DCloud-yyl's avatar
DCloud-yyl 已提交
11 12 13
### 配置  
打开项目的manifest.json文件,在“App模块配置”项的“OAuth(登录鉴权)”下,勾选“Google登录”:
![](https://partner-dcloud-native.oss-cn-hangzhou.aliyuncs.com/images/uniapp/oauth/google-manifest.png)
D
DCloud_LXH 已提交
14

DCloud-yyl's avatar
DCloud-yyl 已提交
15 16
- iOS平台客户端ID  
Google云平台创建的OAuth2.0凭证的iOS平台客户端ID  
D
DCloud_LXH 已提交
17

DCloud-yyl's avatar
DCloud-yyl 已提交
18 19 20
**注意**
- HBuilderX中标准真机运行基座使用的是DCloud申请HBuilder应用的AppID等信息,仅用于体验Google登录功能
- 配置参数需提交云端打包后才能生效,真机运行时请使用[自定义调试基座](https://ask.dcloud.net.cn/article/35115)
D
DCloud_LXH 已提交
21 22


DCloud-yyl's avatar
DCloud-yyl 已提交
23
### 使用Google登录  
D
DCloud_LXH 已提交
24

DCloud-yyl's avatar
DCloud-yyl 已提交
25 26 27 28
- uni-app项目  
调用 [uni.login(OBJECT)](api/plugins/login?id=login) 发起授权登录,调用 [uni.getUserInfo(OBJECT)](https://uniapp.dcloud.io/api/plugins/login?id=getuserinfo) 获取用户信息,OBJECT参数中provider属性值固定为`google`
- 5+ App项目  
调用 [plus.oauth.getServices(successCB,errorCB)](https://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.getServices) 获取登录服务对象 [plus.oauth.AuthService](https://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthService), 再调用其 [login](https://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthService.login) 方法进行登录认证、[getUserInfo](https://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthService.getUserInfo)方法获取用户信息  
D
DCloud_LXH 已提交
29 30


DCloud-yyl's avatar
DCloud-yyl 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
#### 示例代码  
- uni-app项目  
``` js  
uni.login({
    provider: 'google',
    success: function (loginRes) {
        // 登录成功
        uni.getUserInfo({
            provider: 'google',
            success: function(info) {
                // 获取用户信息成功, info.authResult保存用户信息
            }
        })
    },
    fail: function (err) {
        // 登录授权失败  
        // err.code是错误码
    }
});
```  

- 5+ App项目  
``` js  
var googleOauth = null;
plus.oauth.getServices(function(services) {
	for (var i in services) {
		var service = services[i];
		// 获取微信登录对象 
		if (service.id == 'google') {
			googleOauth = service;
			break;
		}
	}
	googleOauth.login( function(oauth){
		// 授权成功,googleOauth.authResult 中保存授权信息  
	}, function(err) {
    // 登录授权失败  
    // err.code是错误码
	})
}, function(err) {
	// 获取 services 失败
})
```