Ios &引用;无效令牌";尝试使用firebase验证电话号码时

Ios &引用;无效令牌";尝试使用firebase验证电话号码时,ios,swift,firebase,swift3,firebase-authentication,Ios,Swift,Firebase,Swift3,Firebase Authentication,这是我的代码: import FirebaseAuth class AuthPhoneNum { static func getPhoneNum(phoneNumber: String) { PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { (verificationID, error) in if let error = error {

这是我的代码:

import FirebaseAuth


class AuthPhoneNum {

    static func getPhoneNum(phoneNumber: String) {
        PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { (verificationID, error) in
            if let error = error {
                print(error)
                return
            }
            UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
        }
    }

    static func verify(verificationCode: String?) {
        guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else { return }
        if verificationCode != nil {
            let credential = PhoneAuthProvider.provider().credential(
                withVerificationID: verificationID,
                verificationCode: verificationCode!)

            Auth.auth().signIn(with: credential) { (user, error) in
                if let error = error {
                    print(error)
                    return
                }
            }
        } else {
            print("No verification code")
        }
    }

}
这是控制台打印的内容:

错误域=FIRAuthErrorDomain代码=17048“无效令牌。” UserInfo={NSLocalizedDescription=无效令牌。, 错误\u name=无效的\u应用\u凭证}


我做错了什么?谢谢

我也遇到了这个问题。检查以下各项:

  • 正确的束Id
  • 更正Google-Info.plist
  • 纠正aps环境的
    value
  • 调用
    auth.setAPNStoken
    时更正APNS令牌类型(
    .unknown
    用于自动检测)

在Firebase应用程序设置中,我上传了APNS身份验证密钥(第8页)而不是证书之前,没有任何帮助。我以前仅将这些证书用于推送通知,一切正常,但用于电话号码通知时出现了问题。

同样的问题以前也有过,所以。因此,我想告诉您在运行代码之前设置所有预要求步骤

预先要求步骤:

  • 在开发人员帐户上注册bundle id并为其启用通知 包id

  • 在firebase控制台设置页面上注册相同的捆绑id并创建 应用程序,下载Google-Info.plist文件,确保名称相同

  • 在firebase控制台上上载沙箱的推送证书以及 发展

  • 按照下面的链接进行代码实现


首先重新生成APNS密钥,并在firebase中上载,以用于云消息传递

1) 导入Firebase和FirebaseAuth

import Firebase
import FirebaseAuth
2) 在didFinishLaunchingWithOptions中配置firebase

FirebaseApp.configure()
3) 在AppDelegate中编写这两个func

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

}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let firebaseAuth = Auth.auth()
    if (firebaseAuth.canHandleNotification(userInfo)){
        print(userInfo)
        return
    }
}
非常重要的注意事项:
uthapstokentype
为[sandbox/production]正确设置或为common
设置。未知

在我的例子中,是apns令牌类型错误:

Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)
应该是:

Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.sandbox)

很可能您需要上传一个.p8密钥文件 (我有一个企业帐户,但对开发者来说也是一样)
在Apple开发者帐户中:

  • 所有钥匙
  • 创建新密钥(+)
  • 键入所有应用程序的全局名称
  • Apple推送通知服务(APNs)旁边的复选框
  • 下载你的p8文件
  • 上载到firebase仪表板

确保在“关键服务”下选择的是APNs。每个开发者帐户的APNs证书数量限制为2个。因此,如果您以前已经有2个证书,则有可能是通过检查DeviceCheck而不是APNs来创建证书的


在我的例子中,问题是iOS应用程序中firebase项目设置中的bundle id不正确(项目设置->常规->您的应用程序)


我希望这有助于忽略相同细节的任何人。

对于仔细检查上述内容但仍有问题的任何人,不要忘记在ios配置文件中添加您的团队ID和应用ID

而且,别忘了再次下载,用更新的替换旧的


您应该提供一个正确的代码示例,说明您正在尝试执行的操作。谢谢您的提示。我更新了我的帖子。我在这里回答说:“另外,请注意,电话号码登录需要物理设备,在模拟器上无法工作。”如果不是这个问题,您是否在控制台中启用了电话号码身份验证?我还缺少Firebase控制台中的APNs.p12文件。一旦我上传了.p12,它就工作了。你是说.p8@AnilGupta,因为我找不到adding.p12 APNanywhere@algrid哪里
aps环境
?hiii我需要帮助您在哪里上传p12?!工作起来很有魅力!不允许我替换APNS证书。但更改为沙盒对我有效。感谢您,在appdelegate.m中添加产品代码后,我在react本机ios发布版本中面临同样的问题。谢谢你,伙计