iOS Facebook SDK 3.1 openActiveSessionWithReadPermissions:检测用户何时未授予访问权限
我需要知道在openActiveSessionWithReadPermissions执行期间,用户何时未授予Facebook对我的应用程序的访问权限。(未授予,意味着开关在设置->Facebook->我的应用程序下设置为“关闭”。) 以下是未授予权限时的错误: Error Domain=com.facebook.sdk Code=2“操作无法完成。(com.facebook.sdk错误2.)”UserInfo=0x1fd46780{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason} 为了进行比较,以下是无网络的错误: Error Domain=com.facebook.sdk Code=2“该操作无法完成。(com.facebook.sdk错误2.)“UserInfo=0x1edf2eb0{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:ErrorLoginFailedReason,com.facebook.sdk:ErrorInnerErrorKey=ErrorDomain=NSURlerErrorDomain代码=-1009”Internet连接似乎处于脱机状态UserInfo=0x1ed47a20{NSErrorFailingURLKey=https://api.facebook.com/method/auth.iosauthorizeapp,NSErrorFailingURLStringKey=https://api.facebook.com/method/auth.iosauthorizeapp,NSLocalizedDescription=Internet连接似乎处于脱机状态。} 是否有一种简单的方法来检测用户何时未被授权?我是否只在UserInfo字典中查找错误代码2和一个键/值对iOS Facebook SDK 3.1 openActiveSessionWithReadPermissions:检测用户何时未授予访问权限,ios,facebook,facebook-graph-api,social-framework,Ios,Facebook,Facebook Graph Api,Social Framework,我需要知道在openActiveSessionWithReadPermissions执行期间,用户何时未授予Facebook对我的应用程序的访问权限。(未授予,意味着开关在设置->Facebook->我的应用程序下设置为“关闭”。) 以下是未授予权限时的错误: Error Domain=com.facebook.sdk Code=2“操作无法完成。(com.facebook.sdk错误2.)”UserInfo=0x1fd46780{com.facebook.sdk:ErrorLoginFaile
我希望Facebook能像accountstorerequestaccesscompletionhandler一样给我们一个
BOOL,我没有找到一个好的解决方案。我用这个:
[FBSession openActiveSessionWithReadPermissions:FACEBOOK_READ allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
// find error for not granted
if(error && error.code == 2) {
NSDictionary *userInfo = error.userInfo;
if(userInfo && userInfo.count == 1) {
[self fallbackLogin];
return;
}
}
[self sessionStateChanged:session state:state error:error];
}];
- (void)fallbackLogin {
// use deprecated
[FBSession openActiveSessionWithPermissions:FACEBOOK_READ allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
}
您可以使用以下代码检查权限:
- (void)checkForPermissions {
// We will request the user's public profile and the user's birthday
// These are the permissions we need:
NSArray *permissionsNeeded = @[@"basic_info", @"email"];
// Request the permissions the user currently has
[FBRequestConnection startWithGraphPath:@"/me/permissions"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
//If there is error, handle it accordingly.
//Results contains all the permissions user has granted the app.
//If you do not have the desired permissions, reauthorize the app
// Ask for the missing permissions
//requestPermissions = array of permissions to be asked
[FBSession.activeSession
requestNewReadPermissions:requestPermissions
completionHandler:^(FBSession *session, NSError *error) {
//Handle the session object as per your requirements.
}];
}];
}
希望这有帮助。您找到解决方案了吗?