iOS 上的 Firebase 短信验证 - “令牌不匹配”

问题描述 投票:0回答:4

当尝试与一些外部用户一起测试我的应用程序时,他们都无法使用电话号码短信验证正确进入应用程序。直接从 Xcode 构建时,开发人员都可以使用该应用程序,但通过链接安装的任何人都无法使用它。

每个尝试登录/注册的用户都会收到

Token Mismatch
的错误读数 - 没有其他信息。

我有有效的生产 APNS 证书,为什么这不起作用?

swift xcode sms firebase-authentication token
4个回答
37
投票

我为解决问题所采取的步骤:

  1. 确保我拥有有效的
    development
    production
    APNS 证书已上传到 Firebase 仪表板的“项目”下 设置'>'云消息'

  1. 在 Xcode 中,在
    <my app>
    .entitlements 文件中,确保 APS Environment 值设置为“开发”或“生产”, 根据您的测试情况。

  1. 最后(这是我所缺少的),检查你的内部
    AppDelegate.swift
    以及方法内部
    didRegisterForRemoteNotificationsWithDeviceToken
    ,更改值 从
    .sandbox
    .prod
    .unknown
    让应用程序 捆绑包根据您的配置文件确定要使用的令牌类型。


3
投票

第1步: 导入 Firebase

2. 将以下内容添加到您的 AppDelegate:-

override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let firebaseAuth = Auth.auth()
    firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.unknown)

}

override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let firebaseAuth = Auth.auth()
    if (firebaseAuth.canHandleNotification(userInfo)){
        print(userInfo)
        return
    }
}

至少这对我有用。


2
投票

就我而言,我有

type:FIRAuthAPNSTokenTypeSandbox
AppDelegate.m

将其设置为

type:FIRAuthAPNSTokenTypeProd
解决了问题。


0
投票

在我的例子中,将 isSandbox:token.type == FIRAuthAPNSTokenTypeSandbox 更改为 FIRPhoneAuthProvider Pod 中的 isSandbox:token.type == FIRAuthAPNSTokenTypeProd

© www.soinside.com 2019 - 2024. All rights reserved.