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
- 调用
时更正APNS令牌类型(auth.setAPNStoken
用于自动检测).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仪表板
在我的例子中,问题是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发布版本中面临同样的问题。谢谢你,伙计