iOS 苹果集成登录及苹果图标的制作要求

打印 上一主题 下一主题

主题 780|帖子 780|积分 2340

前言

如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录。如果应用没有集成一般情况下都会被审核团队给打回来。
苹果集成登录

首先,你需要在开发者中心,找到你的应用,勾选上 Sign  in with Apple

勾选并保存好后, 打开Xcode, 找到项目中的Signing&Capabilities 并添加sign in with apple。

完成上面的配置以后,就可以写代码集成了
在进行代码集成前,需要先导入一个框架 AuthenticationServices.framework
  1. import <AuthenticationServices/AuthenticationServices.h>
复制代码
并遵守ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding协议
如果是自定义苹果按钮样式, 直接处理按钮事件
  1. /**
  2. 苹果登录
  3. */
  4. - (void)signInWithApple {
  5.     if (@available(iOS 13.0, *)) {
  6.             
  7.             ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init];
  8.             ASAuthorizationAppleIDRequest *request = [provider createRequest];
  9.             request.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
  10.             
  11.             ASAuthorizationController *vc = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
  12.             vc.delegate = self;
  13.             vc.presentationContextProvider = self;
  14.             [vc performRequests];
  15.             
  16.         }
  17. }
复制代码
点击后会触发按钮事件, 接着调起苹果登录验证,验证通过后,走验证回调方法
  1. #pragma mark 苹果集成登录
  2. - (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization NS_SWIFT_NAME(authorizationController(controller:didCompleteWithAuthorization:)) API_AVAILABLE(ios(13.0)){
  3.    
  4.     if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]])       {
  5.         ASAuthorizationAppleIDCredential *credential = authorization.credential;
  6.         
  7.         NSLog(@"credential = %@",credential);
  8.         
  9.         NSString *state = credential.state;
  10.         NSString *userID = credential.user;
  11.         NSPersonNameComponents *fullName = credential.fullName;
  12.         NSString *email = credential.email;
  13.         NSString *authorizationCode = [[NSString alloc] initWithData:credential.authorizationCode encoding:NSUTF8StringEncoding]; // 验证 token
  14.         NSString *identityToken = [[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding]; // 用户 token
  15.         ASUserDetectionStatus realUserStatus = credential.realUserStatus;
  16.         NSArray *authorizedScopes = credential.authorizedScopes;
  17.         
  18.         NSLog(@"state: %@\nuserID: %@\nfullName: %@\nemail: %@\nauthorizationCode: %@\nidentityToken: %@\nrealUserStatus: %@\nauthorizedScopes: %@",
  19.               state,
  20.               userID,
  21.               fullName,
  22.               email,
  23.               authorizationCode,
  24.               identityToken,
  25.               @(realUserStatus),
  26.               authorizedScopes);
  27.         
  28.         //苹果登录,传递认证的token
  29.         [self loginWithAppleToken:token];
  30.     }
  31. }
  32. - (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error  NS_SWIFT_NAME(authorizationController(controller:didCompleteWithError:)) API_AVAILABLE(ios(13.0)){
  33.    
  34.     NSString *errorMsg = nil;
  35.     switch (error.code) {
  36.         case ASAuthorizationErrorCanceled:
  37.             errorMsg = @"用户取消了授权请求";
  38.             break;
  39.         case ASAuthorizationErrorFailed:
  40.             errorMsg = @"授权请求失败";
  41.             break;
  42.         case ASAuthorizationErrorInvalidResponse:
  43.             errorMsg = @"授权请求响应无效";
  44.             break;
  45.         case ASAuthorizationErrorNotHandled:
  46.             errorMsg = @"未能处理授权请求";
  47.             break;
  48.         case ASAuthorizationErrorUnknown:
  49.             errorMsg = @"授权请求失败未知原因";
  50.             break;
  51.     }
  52.     DDLogDebug(@"苹果授权失败:%@",errorMsg);
  53. }
  54. - (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller API_AVAILABLE(ios(13.0)){
  55.     return kAppDelegate.window;
  56. }
复制代码
苹果授权验证通过后,会获取到返回的Token, 客户端拿着这个token 去调用服务器Api 来校验。 校验通过后处理用户登录的逻辑就可以了。
苹果图标的制作要求

详见:https://zhanglei.blog.csdn.net/article/details/121492572

来源:https://www.cnblogs.com/reyzhang/p/16199135.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表