使用苹果在权限消息中缺少应用名称登录
Posted
技术标签:
【中文标题】使用苹果在权限消息中缺少应用名称登录【英文标题】:Sign in with apple missing App Name in the permission message 【发布时间】:2020-05-16 22:21:12 【问题描述】:我正在尝试使用Auth0
Sign in with Apple
。
但是权限消息显示我的应用名称为null
这是许可信息。
你想用你的 Apple ID“myAppleId@email.com”登录
null
吗?
我的应用程序的徽标显示正确。显示的是应用名称null
在哪里设置应用名称?
编辑:这是它的外观 -
【问题讨论】:
您是否在 General 中设置了应用名称 --> 显示名称? 无需在任何地方设置名称。它会自动使用项目名称。 @iNiravKotecha 我遇到了同样的问题,你知道为什么 auth0 无法检索到要在权限消息视图中显示的项目名称吗? @AjinkyaSharma 确实解决了这个问题?如果是,你能告诉我怎么做吗?谢谢。 @LuthfiRahman 你在使用 Auth0 吗? 【参考方案1】:您需要在将请求作为请求范围发送时设置名称和电子邮件。
使用 ASAuthorizationAppleIDProvider 创建请求并初始化控制器 ASAuthorizationController 以执行请求的函数。
@objc func handleAppleIdRequest()
let appleIDProvider = ASAuthorizationAppleIDProvider()
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email]
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
authorizationController.delegate = selfauthorizationController.performRequests()
登录成功后调用以下函数。
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization)
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential
let userIdentifier = appleIDCredential.user
let fullName = appleIDCredential.fullName
let email = appleIDCredential.email
print(“User id is \(userIdentifier) \n Full Name is \(String(describing: fullName)) \n Email id is \(String(describing: email))”)
【讨论】:
【参考方案2】:如果尝试使用 Auth0,您可以通过以下方式解决此问题。第 1 步。
if #available(ios 13.0, *)
// Create the authorization request
let request = ASAuthorizationAppleIDProvider().createRequest()
// Set scopes
request.requestedScopes = [.email, .fullName]
// Setup a controller to display the authorization flow
let controller = ASAuthorizationController(authorizationRequests: [request])
// Set delegates to handle the flow response.
controller.delegate = self
controller.presentationContextProvider = self
// Action
controller.performRequests()
第 2 步 实现委托方法,获取苹果的授权码。
extension ViewController: ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
func authorizationController(controller: ASAuthorizationController,
didCompleteWithAuthorization authorization: ASAuthorization)
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential
// Success
guard let authorizationCode = appleIDCredential.authorizationCode,
let authCode = String(data: authorizationCode, encoding: .utf8) else
print("Problem with the authorizationCode")
return
第 3 步
现在您使用此authCode
登录到 Auth0。
func appleSignin(with authCode: String)
Auth0.authentication().tokenExchange(withAppleAuthorizationCode: authCode)
.start result in
switch result
case .success(let credentials):
//LoginSucces
case .failure(let error):
//Issue with login.
在这种方法中,您不会像其他使用 Auth0 的登录方法那样显示 web 视图。 我已经在 Auth0 社区(我在此处发布的问题)上发布了这个,他们的一位工程师回复我以这种方式处理它。 查看更多信息Sign in with Apple - Auth0
【讨论】:
那么,你在auth0 Lock(通用登录视图)中不使用苹果登录? 不,就像我说的,社区的 Auth0 工程师要求我使用其他方式,因为 Webview 存在这类问题。 好的,明白了。当您使用这种方式时,是否有任何简单的方法可以在通用登录视图中重新创建其他 UI 对象? 别这么认为..对我来说,唯一的用户界面是苹果的登录用户界面,在这种情况下。 community.auth0.com/t/… 这里是 Auth0 社区讨论的链接以上是关于使用苹果在权限消息中缺少应用名称登录的主要内容,如果未能解决你的问题,请参考以下文章