相关疑难解决方法(0)

在设备上切换FB帐户时,iOS6上的Facebook授权失败

我正在使用Facebook SDK 3.1.1在我的iOS应用程序中实现FB Connect.这在新的FB集成(在iOS上登录)或通过Web视图回退到正常授权(在两种情况下都没有安装本机Facebook应用程序)的简单情况下工作正常.我在iOS级别切换帐户时会出现此问题.注销并使用其他FB用户帐户登录.

要登录/授权我执行:

[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                         [self sessionStateChanged:session state:state error:error];
                                     }];
Run Code Online (Sandbox Code Playgroud)

如果然后每次获得FBSessionStateClosedLoginFailed,即使我执行了closeAndClearTokenInformation达到该状态的时间:

- (void)sessionStateChanged:(FBSession *)session
                  state:(FBSessionState) state
                  error:(NSError *)error
{
    NSLog(@"Session State Changed: %u", [[FBSession activeSession] state]);
    switch (state) {
        case FBSessionStateOpen:
            break;
        case FBSessionStateClosed:
        case FBSessionStateClosedLoginFailed:
            NSLog(@"FBSessionStateClosedLoginFailed ERROR: %@", [error description]);
            [[FBSession activeSession] closeAndClearTokenInformation];
            break;
        default:
            break;
}
Run Code Online (Sandbox Code Playgroud)

但是,每次重试都会收到相同的状态.我的日志说明如下:

FBSDKLog: FBSession **INVALID** transition from FBSessionStateCreated to FBSessionStateClosed
FBSDKLog: FBSession transition from FBSessionStateCreated to FBSessionStateCreatedOpening 
FBSDKLog: FBSession transition from …
Run Code Online (Sandbox Code Playgroud)

single-sign-on facebook-ios-sdk ios6

24
推荐指数
2
解决办法
3万
查看次数

使用Facebook iOS 3.1.1 SDK中的FBSession openActiveSessionWithReadPermissions处理无效的accessToken

在此之前,我已经阅读了这个这个问题,以解决下面的问题,然后再询问.

我的问题是,当accessToken过期时(或者因为过期日期过去,或者通过从我的Facebook的App Center中删除应用程序而手动操作),以下代码:

if ([[FBSession activeSession] isOpen]) {
        //do something
    }
else {
        [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
            if(FB_ISSESSIONOPENWITHSTATE(status)) {
                //do something
            }
          }
       }];
     }
Run Code Online (Sandbox Code Playgroud)

在FBSession.activeSession打开的情况下进入else块,但是当执行'do something'时,accessToken无效,因此请求获得错误:HTTP状态代码:400.当我尝试立即执行整个过程两次时,FBSession请求权限(UIAlertView for iOS6集成了facebook,Facebook App或Safari网站),其余的运行顺畅.

我担心的是为什么我必须做两次才能正常工作以及为什么Facebook SDK第一次无法检测到activeSession和accessToken无效.

谢谢大家!

facebook objective-c ios facebook-ios-sdk

15
推荐指数
1
解决办法
1万
查看次数

Facebook iOS 6 - 获取用户信息

是否可以使用内置的iOS 6 Facebook集成来获取用户的基本信息(电子邮件地址,生日等)?我见过的所有文档/示例都使用iOS 6集成来简单地打开一个SLComposeViewController.

感谢您的时间.

iphone facebook objective-c ios6

15
推荐指数
1
解决办法
1万
查看次数

更改密码,访问令牌无效

Facebook页面的网站摘要已损坏,我收到以下消息:

"message":"Error validating access token: The session has been invalidated 
  because the user has changed the password.",
"type":"OAuthException","code":190,"error_subcode":460
Run Code Online (Sandbox Code Playgroud)

类似的问题已经被问到,但我注意到其中一些已经很老了,我想确保答案是最新的.

我可以在不重新申请新令牌的情况下解决错误吗?

passwords facebook token

13
推荐指数
2
解决办法
2万
查看次数

在Facebook iOS SDK的openActiveSession之后过期的访问令牌

我正在使用3.1 Facebook SDK与iOS 6 Facebook设置在设置和我的应用程序授权.

这完美地执行:

[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *fbSession, FBSessionState fbState, NSError *error) { ... }
Run Code Online (Sandbox Code Playgroud)

但是现在当我试图获取"我"信息时,我收到了一个错误:

com.facebook.sdk:ParsedJSONResponseKey = {
    body =     {
        error =         {
            code = 190;
            "error_subcode" = 463;
            message = "Error validating access token: Session has expired at unix time 1348704000. The current unix time is 1348706984.";
            type = OAuthException;
        };
    };
    code = 400;
}
Run Code Online (Sandbox Code Playgroud)

如果我看[error code]它等于5.我登录后不应该有一个有效的访问令牌吗?我需要拨打重新授权吗?

更新:重新授权没有帮助.奇怪的是,我的activeSession的accessToken总是回归相同.尽管调用了closeAndClearToken.

facebook login ios

9
推荐指数
1
解决办法
8373
查看次数

验证访问令牌时出错:用户XXX未授权应用程序YYY

我正在尝试处理权限错误,基本上我从www.facebook.com应用程序设置中删除了该应用程序.在应用程序中我使用此方法登录:

[FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState    status, NSError *error) { 
Run Code Online (Sandbox Code Playgroud)

出于某种原因,令牌被缓存,应用程序没有意识到我从Web上删除了权限.因此,在openActiveSessionWithReadPermissions之后,会话总是打开,然后我发出请求,然后我得到下一个响应:(不是在错误对象中,而是在响应中):

验证访问令牌时出错:用户XXX未授权应用程序YYY.

所以我处理它,因为令牌无效我这样做:

[[FBSession activeSession] closeAndClearTokenInformation];
Run Code Online (Sandbox Code Playgroud)

并再次尝试登录,但同样的问题.

似乎如果用户从网络中删除权限,那么聚会永远结束了吗?还有什么回头路?

facebook objective-c

5
推荐指数
0
解决办法
3357
查看次数

接受应用程序时选择"Not Now"会导致"com.facebook.sdk error2"

使用Facebook iOS SDK 3.1.

当选择不允许"连接"到Facebook应用程序时,我被困在Facebook投掷"com.facebook.sdk error2".即使在重新安装我的应用程序后,我也会遇到错误.

重现步骤:

  1. 选择与Facebook连接
  2. UIAlertView弹出的选项中选择"Not Now"

=>我无法选择再次连接.

用户再次连接的唯一方法是从"设置"中删除她的Facebook帐户并再次添加.

这是Facebook SDK中错误还是我错过了什么?

我显然已经按照授权教程进行了操作,并且在选择连接时一切正常(auth,发布内容).

facebook ios facebook-ios-sdk

4
推荐指数
1
解决办法
5103
查看次数

iOS SDK似乎无法处理iOS 6中的已撤销访问令牌

在我的应用程序获得访问在iOS 6的设置中注册的Facebook帐户后,我从我的facebook的隐私设置中撤消了该应用程序.然后我尝试通过调用[FBSession openActiveSessionWithReadPermissions ...]重新连接我的应用程序,并且该方法使用旧的访问令牌创建facebook会话,该令牌已经是INVALID,而不再请求权限授予.

我认为这个问题与这个问题有关(Facebook SDK 3.1 - 验证访问令牌的错误),据说它在SDK 3.1.1中得到修复.

但是,我正在使用SDK 3.1.1并通过在发生无效访问令牌错误时手动调用accountStore renewCredentialsForAccount事件来解决此问题.

single-sign-on facebook-ios-sdk ios6

4
推荐指数
1
解决办法
804
查看次数

iOS 6 Facebook登录不刷新访问令牌

我正在阅读的内容(许多FB开发文章和SO问题)都在帮助,所以我想我会在这里发帖.我试图让这一切与iOS 6和Facebook SDK 3.1.1一起使用.

我有一个非常基本的设置:我的iOS应用程序通过Facebook验证,我将access_token传递给我的服务器,用户现在登录到我的应用程序.他们可以做的唯一与facebook有关的事情就是发布一些东西到他们的墙上.我正在使用旧的Dialog窗口,因此用户可以添加自己的注释.

在第一个小时左右的新安装中,一切都完美无缺.如果用户通过iOS设置应用程序登录,他们会看到一个快速的iOS确认框,我得到他们的令牌,发送到我的服务器,我们都很好.

如果我将我收到的令牌粘贴到Facebook的Access Token调试器中,它会显示它将在一小时后到期.

如果我等了那个小时然后回到应用程序,我尝试做的任何事都会给我这个错误:

{"error_code":190,"
  error_msg":"Error validating access token: 
              Session has expired at unix time 1351497600. 
              The current unix time is 1351525180. }
Run Code Online (Sandbox Code Playgroud)
  1. 我需要做什么才能正常工作?我已经在SDK 3.1.1中看过FBSession将会处理它,但情况似乎并非如此.我的访问令牌即将到期,一旦它到期,iOS/FB SDK将不会给我一个刷新的.
  2. 即使注销(哪些调用[FBSession.activeSession closeAndClearTokenInformation])也无法解决此问题.我唯一能做的就是在iOS模拟器首选项中"重置内容和设置",在Settings.app中重新输入我的FB凭据,然后重建我的应用程序.只有这样我才能获得另一个将在一小时后到期的令牌.

散记:

  1. 当我的应用程序恢复时,我正在打电话[FBSession.activeSession handleDidBecomeActive][self.facebook extendAccessTokenIfNeeded]
  2. 根据上面链接的SO问题,SDK应该自动调用FBSession#renewSystemAuthorization.我已经在那里放了一个NSLog,我从来没有看到这个方法被调用.

更新#1:

我提到我已经读过SDK会处理无效/过期的令牌.似乎应该在FBRequestConnection#completionWithResults:orError:中发生.有关代码路径的说明,请参阅内联注释.

- (void)completeWithResults:(NSArray *)results
                orError:(NSError *)error
{
    int count = [self.requests count];
    for (int i = 0; i < count; i++) {
        FBRequestMetadata *metadata = [self.requests objectAtIndex:i];
        id result = error …
Run Code Online (Sandbox Code Playgroud)

iphone facebook objective-c facebook-access-token ios6

3
推荐指数
1
解决办法
3723
查看次数

FBSDKLog:系统授权失败:

我添加了facebook sdk来访问用户帐户.但是当用户已经通过iOS 6 facebook登录facebook时,然后在我的应用程序的第一页上,它必须显示应用程序要求配置文件权限的警报.为此,我在app delegate中添加了以下代码

[FBSession openActiveSessionWithAllowLoginUI:true];

NSArray *permissions = [NSArray arrayWithObjects:
                        @"friends_about_me",nil];
[FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:true  
 completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    if (error) {
        NSLog(@"Failure");
    }
}];

return YES;
Run Code Online (Sandbox Code Playgroud)

}

- (BOOL)application:(UIApplication*)application openURL:(NSURL )url sourceApplication:(NSString)sourceApplication annotation:(id)annotation {return [FBSession.activeSession handleOpenURL:url]; }

我正在收到警报. 在此输入图像描述

但是,当我点击确定按钮时,它会给我以下错误

FBSDKLog:系统授权失败:'Facebook服务器无法满足此访问请求:remote_app_id与存储的ID不匹配'.这可能是由于开发人员在face.facebook.com/apps上捆绑标识符与服务器上的应用配置不匹配造成的.

但在我的fb开发者帐户中,一切都很好.请帮我解决这个问题.

谢谢!

facebook objective-c ios6

2
推荐指数
1
解决办法
2846
查看次数