快速集成Apple三方登录
多个项目中使用到第三方登录,所以归纳总结如下。
1、 SignInWithAppleID
真正实现3句代码集成Apple登录
关于SignInWithAppleID在开发者网站的配置晚上很多,随便一搜都是。这里只是集成的介绍:
Git地址 : https://github.com/doudoudie/DDSignIn/
1、 苹果有给我们内置一个登录请求的按钮 ASAuthorizationAppleIDButton , 所有简单继承了下苹果的内置按钮, 实现了其初始化以及Block回调。这样就可以几行代码就完成集成。 把想要的结果回调到自己的工程。
DCAppleIDButton *button = [[DCAppleIDButton alloc] initDCAppleIDButtonWithFrame:CGRectMake(0, 0, 64, 64) actionBlock:
^(BOOL success, NSDictionary * _Nullable authorDic) {
}];
button.center = self.view.center;
[self.view addSubview:button];
这里回调返回的 authorDic 就是Apple API回调给我们的一些参数。
2、如果您不想使用Apple内置的按钮,需要个性化定制。 那么你同样使用以下几行代码, 快速集成。
self.signInHandle = [[DCSignInWithAppleHandle alloc] init];
[self.signInHandle postAuthorizationRequests:^(BOOL success, NSDictionary * _Nullable authorDic) {
}];
这里回调返回的 authorDic 同上。
3、为了登录的安全性和有效性,防止一些异常操作和异常情况。苹果还提供了检查登录状态的API, 具体使用代码如下:
[self.signInHandle checkCredentialStateWithUserID:@"userID" completion:^(BOOL success,ASAuthorizationAppleIDProviderCredentialState credentialState) {
}];
这里的入参 userID 其实就是登录回调authorDic里的userID, 这个也困惑了我很久, 网上很多人说什么Keychain里获取的userIdentifier。 我不知道Keychain里的能不能用(没有验证过), 但我authorDic回调的userID一定是可以的。单前提是得用真机(iOS13以上),我模拟器搞了半天一直检查失败。明明在模拟器上登录都成功了 ,可这个检查一直是失败的。 换成真机,一把就成功。
以上就是SignInWithApple的集成方式。
网友评论