0

在我的应用程序中,我想从 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 设备上登录。当我尝试登录时,它将打开一个 safari,然后显示消息正在更新。然后它将在未经授权的情况下重定向。检索到的访问令牌为零。所以我无法检索图像。

请帮我。

编辑

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

4

2 回答 2

1

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

于 2013-05-02T12:27:10.620 回答
0

我遇到了类似的问题,并通过在这个网站上编写了几个解决方案来解决它。首先,我在我的信息列表中摆脱了 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
         }
     }];
  }
于 2014-06-11T12:32:51.447 回答