iOS 接入SnapChat登录

最近项目SnapChat第三方登录的需求,于是就阅读了开发文档接入了。在这过程中也遇到了一些小问题,索性就记录下来,希望可以能帮到一些人

1.SnapChat开发者管理后台创建App

https://kit.snapchat.com/portal/apps,管理后台可以填写开发和生产的一些应用配置信息
这里需要注意的是Redirect URLs一栏,最开始以为是服务器配置的回调地址,但是没有给出后端应该怎么校验和使用,最后发现是本地的URL Scheme信息可以登录授权成功,拿到我们需要的用户唯一标识 externalId

iOS 接入SnapChat登录_第1张图片
app配置信息

2.配置开发项目

info.plist 中加入SnapChat配置

SCSDKClientId
    d8c60733-f2fb-499b-b073-dc3e1c3600c6
    SCSDKRedirectUrl
    tassel://snapLogin
    SCSDKScopes
    
        https://auth.snapchat.com/oauth2/api/user.display_name
        https://auth.snapchat.com/oauth2/api/user.external_id
        https://auth.snapchat.com/oauth2/api/user.bitmoji.avatar
    
iOS 接入SnapChat登录_第2张图片
snapchat配置
iOS 接入SnapChat登录_第3张图片
URL Schemes配置

3.开始接入SDK

注意:根据SnapChat官方文档中描述的SnapChat SDK支持是最低设备版本iOS 10,所以如果你的App低于这个版本的话,考虑到兼容稳定性,可以尝试在低版本系统中进行一些隐藏处理

这里是以Pod方式引入的

pod 'SnapSDK', :subspecs => ['SCSDKLoginKit']

关键代码

- (void)snapChatLogin {

    [SCSDKLoginClient loginFromViewController:self completion:^(BOOL success, NSError * _Nullable error) {
        if (success) {
            [self fetchUserData];
        }
    }];
}
- (void)fetchUserData {
    
    //这里是GraphQL 获取需要的用户信息,可以根据需要获取
    NSString *queryString = @"{me{externalId, displayName, bitmoji{avatar}}}";
    [SCSDKLoginClient fetchUserDataWithQuery:queryString variables:nil success:^(NSDictionary * _Nullable resources) {
        NSLog(@"=========> user data %@",resources);
    } failure:^(NSError * _Nullable error, BOOL isUserLoggedOut) {
        
    }];
}

SnapChat SDK支持原生app跳转登录以及网页登录,这里测试方便使用的是模拟器

iOS 接入SnapChat登录_第4张图片
登录授权

成功拿到用户信息

iOS 接入SnapChat登录_第5张图片
user data

在阅读SnapChat开发文档中并未找到后端校验externalId真实性的方法,为了安全起见可以考虑对此项字段进行处理

最后放上 Demo 如果你在接入过程中遇到或者有别的想法欢迎沟通交流

你可能感兴趣的:(iOS 接入SnapChat登录)