版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.04.04 |
前言
相信很多人用过友盟,包括友盟的第三方登录、分享以及统计。这里我们就分几个模块进行详细的说明 —— 移动统计
(U - App)
、网站统计(U - Web)
、消息推送(U - Push)
、社会化分享(U - Share)
、游戏统计(U - Game)
、互联网运营数据服务(Dplus)
- 多维度、一站式、精细化数据管理服务。感兴趣的可以看上面几篇。
1. 友盟集成(一) —— UShare模块之快速集成(一)
2. 友盟集成(二) —— UShare模块之快速集成(二)
三方登录的概念
1. 第三方登录的定义
第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系。
2. 如何实现三方登录
三方登录所添加的SDK和分享功能相同,在这里不再复述,具体工程配置、系统回调及URL scheme配置参考对应分享文档即可 分享文档。
最终通过调用登录接口,获取用户在第三方平台的用户ID、头像等资料完成账号体系的构建。
3. 三方登录支持的平台
- 国内平台
微信、QQ、新浪、腾讯微博、人人网、豆瓣
- 国外平台
Facebook、Twitter、linkedIn、Kakao
代码集成
// 在需要进行获取登录信息的UIViewController中加入如下代码
#import
- (void)getUserInfoForPlatform:(UMSocialPlatformType)platformType
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:platformType currentViewController:self completion:^(id result, NSError *error) {
UMSocialUserInfoResponse *resp = result;
// 第三方登录数据(为空表示平台未提供)
// 授权数据
NSLog(@" uid: %@", resp.uid);
NSLog(@" openid: %@", resp.openid);
NSLog(@" accessToken: %@", resp.accessToken);
NSLog(@" refreshToken: %@", resp.refreshToken);
NSLog(@" expiration: %@", resp.expiration);
// 用户数据
NSLog(@" name: %@", resp.name);
NSLog(@" iconurl: %@", resp.iconurl);
NSLog(@" gender: %@", resp.unionGender);
// 第三方平台SDK原始数据
NSLog(@" originalResponse: %@", resp.originalResponse);
}];
}
旧版本升级注意
若在4.x及5.x版本中使用微信登录,升级后需参考说明:4.x/5.x版本升级(授权信息变化)
登录成功后,第三方平台会将用户资料传回,由于各个平台对于用户资料的标识不同,因此为了便于开发者使用,我们将一些常用的字段做了统一封装,开发者可以直接获取,不再需要对不同平台的不同字段名做转换,这里列出我们封装的字段及含义。
不同平台的登录调用方法
1. 新浪微博:
- 授权并获取用户信息(获取uid、access token及用户名等)
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import
- (void)getAuthWithUserInfoFromSina
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_Sina currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Sina uid: %@", resp.uid);
NSLog(@"Sina accessToken: %@", resp.accessToken);
NSLog(@"Sina refreshToken: %@", resp.refreshToken);
NSLog(@"Sina expiration: %@", resp.expiration);
// 用户信息
NSLog(@"Sina name: %@", resp.name);
NSLog(@"Sina iconurl: %@", resp.iconurl);
NSLog(@"Sina gender: %@", resp.unionGender);
// 第三方平台SDK源数据
NSLog(@"Sina originalResponse: %@", resp.originalResponse);
}
}];
}
2. qq:
- 授权并获取用户信息(获取uid、access token及用户名等)
- (void)getAuthWithUserInfoFromQQ
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"QQ uid: %@", resp.uid);
NSLog(@"QQ openid: %@", resp.openid);
NSLog(@"QQ unionid: %@", resp.unionId);
NSLog(@"QQ accessToken: %@", resp.accessToken);
NSLog(@"QQ expiration: %@", resp.expiration);
// 用户信息
NSLog(@"QQ name: %@", resp.name);
NSLog(@"QQ iconurl: %@", resp.iconurl);
NSLog(@"QQ gender: %@", resp.unionGender);
// 第三方平台SDK源数据
NSLog(@"QQ originalResponse: %@", resp.originalResponse);
}
}];
}
3. 微信:
授权并获取用户信息(获取uid、access token及用户名等)
注意这里的uid为unionID
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import
- (void)getAuthWithUserInfoFromWechat
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Wechat uid: %@", resp.uid);
NSLog(@"Wechat openid: %@", resp.openid);
NSLog(@"Wechat unionid: %@", resp.unionId);
NSLog(@"Wechat accessToken: %@", resp.accessToken);
NSLog(@"Wechat refreshToken: %@", resp.refreshToken);
NSLog(@"Wechat expiration: %@", resp.expiration);
// 用户信息
NSLog(@"Wechat name: %@", resp.name);
NSLog(@"Wechat iconurl: %@", resp.iconurl);
NSLog(@"Wechat gender: %@", resp.unionGender);
// 第三方平台SDK源数据
NSLog(@"Wechat originalResponse: %@", resp.originalResponse);
}
}];
}
4. 腾讯微博
授权并获取用户信息(获取uid、access token等)
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import
- (void)getAuthWithUserInfoFromTencentWeibo
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_TencentWb currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"TencentWeibo uid: %@", resp.uid);
NSLog(@"TencentWeibo accessToken: %@", resp.accessToken);
NSLog(@"TencentWeibo expiration: %@", resp.expiration);
// 第三方平台SDK源数据
NSLog(@"TencentWeibo originalResponse: %@", resp.originalResponse);
}
}];
}
5. 豆瓣
授权并获取用户信息(获取uid、access token等)
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import
- (void)getAuthWithUserInfoFromDouban
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_Douban currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Douban uid: %@", resp.uid);
NSLog(@"Douban accessToken: %@", resp.accessToken);
NSLog(@"Douban expiration: %@", resp.expiration);
// 第三方平台SDK源数据
NSLog(@"Douban originalResponse: %@", resp.originalResponse);
}
}];
}
6. 人人
授权并获取用户信息(获取uid、access token等)
// 在需要进行获取用户信息的UIViewController中加入如下代码
#import
- (void)getAuthWithUserInfoFromRenren
{
[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_Renren currentViewController:nil completion:^(id result, NSError *error) {
if (error) {
} else {
UMSocialUserInfoResponse *resp = result;
// 授权信息
NSLog(@"Renren uid: %@", resp.uid);
NSLog(@"Renren accessToken: %@", resp.accessToken);
NSLog(@"Renren expiration: %@", resp.expiration);
// 第三方平台SDK源数据
NSLog(@"Renren originalResponse: %@", resp.originalResponse);
}
}];
}
后记
本篇主要介绍的就是三方登录的集成以及代码示例,感兴趣的给个赞或者关注~~~~~