2017-04-20 39 views
0

我在中使用iOS应用程序为用户提供服务器支持。 当有人想要更改他的凭证(电子邮件/密码)或他的显示名称时,我请求确认当前凭证。有没有一种方法(API)检查提供的凭证是否与当前登录的用户相匹配,除了执行注销并尝试再次登录之外,希望提供的凭证是否正确?如何在用户登录时确认凭证? (在Firebase上)

回答

2

使用以下方法,使用火力

let user = FIRAuth.auth()?.currentUser 
var credential: FIRAuthCredential 

// Prompt the user to re-provide their sign-in credentials 

user?.reauthenticate(with: credential) { error in 
    if let error = error { 
    // An error happened. 
    } else { 
    // User re-authenticated. 
    } 
} 

电子邮件重新认证用户:

let credential = FIREmailPasswordAuthProvider.credentialWithEmail(email,` password: password) 

Facebook的:

let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString) 

Twitter的:

let credential = FIRTwitterAuthProvider.credentialWithToken(session.authToken, secret: session.authTokenSecret) 

谷歌:

let authentication = user.authentication 
let credential = FIRGoogleAuthProvider.credentialWithIDToken(authentication.idToken, accessToken: authentication.accessToken) 

继承人描述IOS ios user management in firebase

+0

OK用户管理的火力链接。事实上,我只是通过使用FIRAuth.auth()?signIn()来重新验证身份,当登录名太旧时,却不知道它存在(重新验证)。无论如何,它似乎并不是我所希望的,如果证书是错误的,这种方法将简单地将用户登出(我想)。我只是想在引擎盖下进行一个简单的比较,而不用去注销用户。 – Michel

+0

在这种情况下,您可以在本地保存证书,然后进行比较,只需确保在保存凭据的同时应用AES 256等一些加密技术。 –

+0

我明白了。顺便说一下,如何设置您在答案中提到的凭证变量? (我正在使用Swift 3)。 – Michel

相关问题