使用苹果在权限消息中缺少应用名称登录

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 社区讨论的链接

以上是关于使用苹果在权限消息中缺少应用名称登录的主要内容,如果未能解决你的问题,请参考以下文章

有人可以为我提供苹果应用商店的解决方案吗

苹果手机出现logintype为必要参数

ios电报无法登陆

再也不怕流氓App!苹果将推出新功能:全面监管应用权限

苹果拒绝PhoneGap App:数据收集和存储

为啥无法使用苹果按钮登录?