Tag: authentication

重新authentication用户凭据Swift

我希望在允许用户更改其login信息之前重新对用户进行身份validation。 但是,由于最近的Firebase更新,我发现文档相当无益。 使用这个链接我产生了下面的authenticateUser()函数。 func authenticateUser() { let user = FIRAuth.auth()?.currentUser var credential: FIRAuthCredential //prompt user to re-enter info user?.reauthenticateWithCredential(credential, completion: { (error) in if error != nil { self.displayAlertMessage("Error reauthenticating user") } else { //user reauthenticated successfully } }) } 但是,我不确定如何处理types为FIRAuthCredential的凭证variables,以重新validation用户身份。 这个类的文档可以在这里find。

Firebase:我可以使用Facebook的新帐户套件对应用用户进行身份validation吗?

Facebook刚刚在F8 2016推出了账户套件 。 它使应用程序用户能够使用他们的电话号码或电子邮件地址login。 我已经尝试使用它的返回的访问令牌来validation与常规的Facebooklogin的Firebase,但它没有工作。 是否已经有一种方法使用Facebook帐户工具包对使用Firebase的应用用户进行身份validation? 附加信息 我可以通过帐户工具包login,并通过AccountKit.getCurrentAccessToken();获得访问令牌AccountKit.getCurrentAccessToken(); 然后我尝试使用访问令牌对Firebase进行身份validation: 选项1) mFirebaseRef.authWithOAuthToken("facebook", accessToken.getToken(), new AuthResultHandler("facebook")); – > FirebaseError:提供的authentication凭证无效。 选项2) mFirebaseRef.authWithCustomToken(accessToken.getToken(), new Firebase.AuthResultHandler() { … } – > FirebaseError:login失败 – 无法parsing身份validation令牌。 (顺便说一句,访问令牌string是我使用常规的Facebookloginbuttonlogin时生成的令牌长度的一半)。 我想知道我是否已经可以使用帐户工具包生成的令牌来validationFirebase? – (顺便说一句,我也试着在这里得到答案: https : //groups.google.com/forum/#!topic/ firebase-talk/qrb1gWBKO3M)

Ionic Framework和Firebase 3.x版本:此域未授权用于您的Firebase项目的OAuth操作

我正在使用Ionic Framework和Firebase开发iOS应用程序。 我在我的项目中更新了Firebase SDK到3.x版本。 我正在尝试的是在真实的设备上使用Facebook对用户进行身份validation。 当我在浏览器上testing时,一切正常。 但是,每当我在真正的iOS设备上运行,我总是得到以下错误: 您的Firebase项目没有针对此域进行OAuth操作。 从Firebase控制台编辑授权域列表。 在Firebase上,我已将“localhost”和“127.0.0.1”添加到我的授权网域列表中。 所以我不知道该怎么做。 为了您的信息,我不在我的项目中使用WKWebView。 这里有人能告诉我怎么解决这个问题吗? 请指教。

如何使用远程Web应用程序对iOS / iPhone用户进行身份validation,并在将来对同一个Web应用程序的请求中重新使用身份validation票证?

我正在构build一个iOS应用程序,我需要能够对Rails 3应用程序的各种数据位进行身份validation请求。 Rails 3应用程序正在使用omniauth和像https://myapp.com/auth/facebook这样的URL,例如,通过Facebook对用户进行身份validation,一旦通过身份validation,就将身份validation存储在名为“auth”的安全cookie中。 我想知道的是如何从iOS / iPhone应用程序authentication我的用户,坚持authentication令牌并将其与未来的请求一起发送到Rails应用程序? 使用ASIHTTPRequest我正在考虑做这样的事情: 打开一个UIWebview,从我的 Web应用程序中加载一个特定于他们想要authentication的提供者的URL(例如myapp.com/auth/facebook for facebook或myapp.com/auth/yahoo for yahoo等)。 成功时,以某种方式parsing出来并将authenticationcookie存储在iOS应用程序中, 而不显示通过网站进行authentication时通常会看到的网页…而是closuresUIWebView并导航回iOS应用程序中的另一个UIVewController。 以某种方式将持久的身份validation令牌与将来的Web请求包含到Rails应用程序中。 我还希望允许用户允许iOS应用程序在本地存储这些信息,因此如果他们也select,则不必重新login到远程应用程序。 这种方法是否合适? 有没有更好的办法? 当然,如何实际执行上述? 谢谢 – wg

暴露Rails /deviseauthentication到iOS应用程序

我有一个轨道3.1应用程序,使用deviseauthentication与简单的用户模型与电子邮件,密码等我需要能够从iPhone应用程序进行身份validation。 我如何公开这个function? 广泛的答案是好的,因为我不知道我的select是什么。

会话过期devise模式

我经常不得不应付会话/访问令牌在iOS应用devise中过期,并且从来没有真正发现过我可以100%满意的devise,所以我在这里问这个问题是否有人可以提出更好的devise比我目前使用。 问题 您有一个使用用户名和密码login的应用程序。 服务器返回一个访问令牌,应该用于将来的请求来validation该用户。 在将来某个时间点(未知时间),服务器将使该令牌过期,并且使用该令牌发送的任何请求将返回authentication失败。 由于会话过期而失败后,应用程序应该使用原始凭证重新login并获取新的访问令牌。 然后它可以重试原始请求。 例 所以想象一下你有一个API来获取需要authentication的新闻文章列表。 stream程可能是这样的: 用户login和应用程序接收令牌。 视图控制器刷新新闻文章列表。 API请求是使用附加的标记进行的。 API请求成功,并使用新文章更新视图。 应用程序已closures,一段时间过去了。 应用程序打开时,视图控制器要刷新新闻文章的列表。 API请求是使用附加的标记进行的。 API请求失败,因为令牌已过期。 View Controller请求刷新令牌并耐心等待。 一旦令牌被刷新,API请求被重试。 现在想象这是从应用程序中的多个地方完成的。 我目前如何解决它 我通常做的是将证书存储在NSUserDefaults (如果我不关心这些证书的安全性 – 明显更好地使用keychain),然后在全局pipe理器对象(singleton)上使用这些凭证刷新login当我注意到会议已经过期。 这个全局pipe理器在login状态发生变化时触发通知,以便应用程序的其他部分可以知道在会话过期失败后应该何时重试请求。 我不觉得是对的 那么,我从来没有喜欢pipe理器对象的状态机处理。 每个执行请求的地方都需要保存一些状态,以便知道login刷新正在进行,并在刷新login后重试请求。 还有一个问题,如果刷新失败,因为现在密码错误(用户可能改变了它) – 你可能不想完全注销并且销毁应用程序的所有用户状态,因为你可能只是能够请求新的密码并继续进行。 但全球经理并没有真正涉及到用户界面,所以很难处理要求新login的用户界面。 我想知道答案 我明白,这个问题是特别模糊和概念性的(尽pipe我仍然认为可以在StackOverflow上运行),但我真的很想知道其他人是如何解决这类问题的。 只是解释你如何去处理会话过期,重新尝试从整个应用程序失败的请求,并要求用户新的凭据,如果刷新不起作用。 我想整个事情的症结在于这个问题: 在何处放置由于会话到期而失败的请求的重试逻辑。 我看到这些地方是select: 在视图控制器级别(即保持一个标志来说,一旦login刷新完成,我们需要重试最后的请求)。 在API请求级别(即将API请求封装在知道要在刷新login后重试的对象中)。 在全局loginpipe理器级别(也就是说,当refreshLogin被调用时,在login被刷新后执行)。

如何在离线时将数据写入Firebase? Swift3

在tableView中,我有一个作业列表。 这些作业可以被多个用户访问,因此我需要使用FIRTransaction。 根据首次写入FirebaseDatabase的结果,我需要在Firebase中写入/不写入其他path。 模式如下: //Claim job by – Cleaner //cleaner tries to claim booking at Users/UID/cus/bookingNumber //if FIRMutableData contains a key 'claimed' or key:value “claimed”:true //update at Users/UID/cus/bookingNumber with key:value //based on response received write or not to another path //write to Cleaners/UID/bookingNumber //key:value 如果客户端应用程序收到来自Firebase服务器的响应之前互联网连接丢失,则不会写入Cleaners/UID/bookingNumber 。 我怎么解决这个问题? @IBAction func claimJob(_ sender: Any) { dbRef.runTransactionBlock({ (_ […]

将“全名”字段添加到Firebase电子邮件/密码身份validation?

有没有办法在Firebase上的电子邮件/密码身份validation中添加“全名”字段? (使用Swift)

使用Firebase 3和Swiftlogging用户仍会显示`currentUser`

我正尝试在iOS应用程序中使用Firebase 3login用户。 这是我的代码: do { databaseReference.child("Users").child(CUUID!).removeAllObservers() try FIRAuth.auth()?.signOut() print("FIRUSER – \(FIRAuth.auth()?.currentUser)") self.performSegueWithIdentifier("logOutSegue", sender: self) } catch let logOutError { print("Error Logging User Out – \(logOutError)") } 我想要做的是执行一个segue回到login屏幕,如果用户成功注销。 为了检查用户是否已注销,我打印currentUser以查看是否还有一个。 我打logOutbutton和segue工程(没有赶上 – >没有错误),但是当print("FIRUSER – \(FIRAuth.auth()?.currentUser)")代码运行时,我仍然得到currentUser。 为什么用户不被注销?

iOS5:willSendRequestForAuthenticationChallenge方法正在recursion运行

我正在使用下面的代码来validation远程服务器的用户。如果我给出正确的用户名和密码,没有问题,因为身份validation正在发生,我正在从服务器获得响应。 但是,当我给错了证书,这个方法是以recursion的方式调用,所以我不能打破这个。 请帮助我,如何打破这个,我应该能够显示身份validation失败的警报消息。 – (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession]; [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; }