[英]Facebook login issue in iOS with latest SDK
我正在使用脸书登录实现应用程序。 我需要访问用户“公共资料”以及“电子邮件ID”。 这里的电子邮件ID是必须的。 我能够登录,但是输入登录详细信息后,它会显示评论页面,在该评论页面中,它会显示“编辑您提供的信息”按钮,这是我面临的问题。 我在这里有2个疑问1)是否可以禁用“您提供的编辑信息”选项(或)2)是否可以对电子邮件字段(如公共资料)禁用用户交互。 我的代码如下。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self toggleHiddenState:YES];
self.lblLoginStatus.text = @"";
self.loginButton.delegate = self;
self.loginButton.readPermissions = @[@"public_profile",@"email"];
}
#pragma mark - Private method implementation
-(void)toggleHiddenState:(BOOL)shouldHide{
self.lblUsername.hidden = shouldHide;
self.lblEmail.hidden = shouldHide;
self.profilePicture.hidden = shouldHide;
}
#pragma mark - FBLoginView Delegate method implementation
-(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView{
self.lblLoginStatus.text = @"You are logged in.";
[self toggleHiddenState:NO];
}
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
NSLog(@"%@", user);
self.profilePicture.profileID = user.id;
self.lblUsername.text = user.name;
self.lblEmail.text = [user objectForKey:@"email"];
}
-(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView{
self.lblLoginStatus.text = @"You are logged out";
[self toggleHiddenState:YES];
}
-(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error{
NSLog(@"%@", [error localizedDescription]);
}
就我从developers.facebook.com上的文档中读取的第一个和第二个疑问而言,答案是否定的。用户即使在最初给予许可后也可以撤消许可,这是从facebook添加的安全功能。 您可以做的是通过以下方法检查授予您的权限:
[FBRequestConnection startWithGraphPath:@"/me/permissions" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
__block NSString *alertText;
__block NSString *alertTitle;
if (!error){
// Walk the list of permissions looking to see if email has been granted
NSArray *permissions = (NSArray *)[result data];
BOOL emailPermission = FALSE;
for (NSDictionary *perm in permissions) {
if ([[perm objectForKey:@"permission"] isEqualToString:@"email"] &&
[[perm objectForKey:@"status"] isEqualToString:@"granted"]) {
emailPermission = TRUE;
NSLog(@"email granted.");
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.