Facebook iOS SDK 3.0 Re
我有一些关于新的FBSession重新授权(reauthorizeWithPermissions:behavior:completionHandler :)在Facebook SDK 3.0中的问题:
一旦有人在我的应用程序上通过Facebook登录,在某些页面上,我想用他/她的Facebook凭据重新验证用户身份。 这是为了确保查看该页面的人员和发起登录的人员相同。 重新授权的权限与登录保持一致。 我需要的是重新确认用户的密码以确保这种情况。
因此我使用reauthorisationWithPermissions:来做到这一点。 我将行为设置为FBSessionLoginBehaviorForcingWebView,以确保用户被迫输入他/她的凭证。 但是,这根本不起作用。 它只是弹出一个空白的webview几秒钟,然后消失......此时,它调用FBSesstionStateHandler块的状态设置为FBSessionStateOpen,但是,无法调用(completionHandler :)中定义的FBSessionReauthorizeResultHandler。
然而,如果我简单地将行为设置为默认(FBSessionLoginBehaviorWithFallbackToWebView),它可以正常工作,在Facebook应用/ safari之间来回传递请求,并通过正确调用completionHandler完成调用。 但是,默认行为并不强制用户重新输入他/她的密码。
所以我非常困惑,网络上的sdk文档对我的情况并不是很有用。 有人能告诉我我做错了什么......或者在SDK中知道它的一个已知错误? 如果是这样,我该如何去满足我的要求?
-(void) reauthThroughFacebook {
if ( !self.facebookSession.isOpen && self.facebookSession.state == FBSessionStateCreatedTokenLoaded) {
[self.facebookSession openWithBehavior: FBSessionLoginBehaviorWithNoFallbackToWebView
completionHandler: self.stateHandler];
}
if ( self.facebookSession.isOpen ) {
[self.facebookSession reauthorizeWithPermissions: self.userPermissions
behavior: FBSessionLoginBehaviorForcingWebView
completionHandler:^(FBSession *session, NSError* error){
if (self.facebookSession == session) {
[self completedReauthWithSuccess:(error == nil) error:error];
}
}];
} else {
[self completedReauthWithSuccess:NO error:[NSError errorWithDomain: @"No active session found."
code: FBErrorInvalid userInfo: nil]];
}
}
此外,一旦reauth web视图弹出正确,我如何确保用户的电子邮件地址被自动填充并阻止用户表单更改? 我可以访问facebook sdk中的Web视图来设置这些属性吗?
最后,如果re-auth以与登录相同的权限进行,访问令牌和失效日期会发生什么?
先谢谢你,
这是个有趣的问题。 我没有编码它,所以我不知道这是否会工作,但鉴于FB会议的工作方式,这是我最好的方法之一。
使用一个FB会话,我认为你不能这样做。 在给定的会话中,FB auth是二进制的,无论是用户登录(即有一个开放的会话)或不。 各种reauth方法旨在授权其他权限,现在不推荐使用方法来请求其他权限。
您可以通过支持多个FB会话来完成您想要的任务。 次要身份验证与允许第二位FB用户登录到您的应用程序基本相同。 然后,您会在适当的时候关闭第二场会议。 您可以通过比较FB用户ID来强制执行这两个会话是同一个FB用户。
在“理解会话”文档的最后一段中,FB讨论支持多个会话。
链接地址: http://www.djcxy.com/p/83135.html