繁体   English   中英

Facebook登录可在iPhone模拟器上使用,但不能在iPhone设备上使用

[英]facebook login works on iphone simulator but not on iphone device

在我的应用中,我想从Facebook上拍照。 所以我用了facebook ios sdk。 我可以从以下代码进行授权:

 if (appDelegate.session.isOpen) {

            //[appDelegate.session closeAndClearTokenInformation];
            [self retrieveAlbums];

        } else {
            if (appDelegate.session.state != FBSessionStateCreated) {
                // Create a new, logged out session.
                appDelegate.session = [[FBSession alloc] init];
            }

            // if the session isn't open, let's open it now and present the login UX to the user
            [appDelegate.session openWithCompletionHandler:^(FBSession *session,
                                                             FBSessionState status,
                                                             NSError *error) {
                // and here we make sure to update our UX according to the new session state
                //NSLog(@"%@",session.accessTokenData.accessToken);
                [self retrieveAlbums];
            }];

在iPhone模拟器上可以正常工作。 但是我无法在iphone 4设备上登录。 当我尝试登录时,它将打开一个野生动物园,然后显示消息“正在更新”。 然后它将未经授权重定向。 获取为nil的访问令牌。 所以我不能撤回图像。

请帮我。

编辑

谢谢大家。最后我解决了我的问题。 这是因为我在Facebook开发者帐户设置中启用了沙箱模式。 当我禁用沙箱模式时,它可以正常工作。

尝试清除“ Safari”的Cookie和缓存,然后转到“设置”。 另外,如果您不希望应用程序重定向到Safari,只需在info.plist中不提供类似于“ fb-AppId-”之类的URL方案,它将打开一个用于登录的弹出窗口

我遇到了类似的问题,并通过在此网站中编写了几个解决方案来解决了这个问题。 首先,我在info plist上取消了url方案。 因此,现在我的应用程序在我的注册页面中打开了Facebook登录对话框。 这是一件好事,因为它不会来回进行Safari进行Facebook身份验证,而您却留在应用程序内。 我做的第二件事是,在我的代码中放置了一个错误处理机制以用于Facebook登录。 因此,如果用facebook登录失败,它将使用另一种策略登录。

这是我的代码。

  - (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error {

      NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"public_profile", @"user_friends", @"email",
                        nil];
      FBSession *session = [[FBSession alloc] initWithPermissions:permissions];
      [FBSession setActiveSession:session];

      [self openSessionWithAllowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
         if (!error && status == FBSessionStateOpen) {
           NSString *token = session.accessTokenData.accessToken;
           NSLog(@"Logged in! - Token -- %@", token);
         } else {
           NSLog(@"Something wrong happened");//you can check the error code here
         }
     }];
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM