相关疑难解决方法(0)

Facebook SDK 3.1 - 验证访问令牌时出错

我正在尝试将我的应用程序转换到新的Facebook SDK 3.1(支持iOS6身份验证).

我工作得很好,所以我决定从FB网站上的授权应用程序列表中删除该应用程序,以测试iOS是否会再次请求许可.

现在我第一次调用会[FBRequest requestForMe]导致此错误:

响应:

{
  "error": {
    "message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.",
    "type":"OAuthException",
    "code":190,
    "error_subcode":460
  }
}
Run Code Online (Sandbox Code Playgroud)

一些细节:

我正在尝试按如下方式打开会话:

   [FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {

                                           switch (state) {
                                               case FBSessionStateOpen:
                                                   [self presentPostOptions];
                                                   break;

                                               case FBSessionStateClosed:
                                               case FBSessionStateClosedLoginFailed:
                                                   [FBSession.activeSession closeAndClearTokenInformation]; …
Run Code Online (Sandbox Code Playgroud)

facebook ios facebook-ios-sdk ios6 facebook-sdk-3.1

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

该操作无法完成.(com.facebook.sdk错误2.)ios6

嗨,我正在使用ios6 for facebook登录,我收到此错误作为本机弹出窗口

该操作无法完成.(com.facebook.sdk错误2.)

这是我使用过的场景.(我在simularor上运行它)

我已通过设置登录到Facebook应用程序,我尝试登录到我的应用程序,其工作正常.

然后我从设置中退出Facebook并再次使用不同的用户登录.然后我尝试登录该应用程序.我收到了这个错误.

我尝试使用该命令退出应用程序

[FBSession.activeSession closeAndClearTokenInformation];

但没用.

Facebook应用程序中的包标识符与我的ios应用程序中的相同.

这是我用来登录的代码

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self sessionStateChanged:session state:state error:error];
     }];
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

这是我得到的错误

Domain = com.facebook.sdk Code = 2"操作无法完成.(com.facebook.sdk error 2.)"UserInfo = 0x9535330 {com.facebook.sdk:ErrorLoginFailedReason = com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey =,expirationDate:(null),refreshDate:(null),attemptsRefreshDate:0001-12-30 00:00:00 +0000,permissions:(null)>}

注意 我在不同的视频上得到了相同的错误.那时我的代码中有一个错误

而不是给予许可

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",@"birthday", nil];

我做错了

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email,birthday", nil];

解决方案 即使在纠正代码后,我也遇到了同样的错误.我必须从ios设置屏幕注销并登录facebook.一旦我这样做,正确的代码从未引起任何问题.请注意,问题仅发生在先前执行错误代码的设备上.请注意确定导致问题的原因,希望此信息有助于某人

facebook ios facebook-login ios6

22
推荐指数
3
解决办法
10万
查看次数

使用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万
查看次数

用户更改密码后,iOS iOS SDK无法打开登录界面(iOS 6)

一些上下文:用户以前安装了应用程序,授权FB,一切运行良好,然后他们更改了他们的FB密码(通过facebook.com),删除了应用程序,现在重新安装它,并在第一次运行后再次运行重新安装.

我正在调用[FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler],allowLoginUI: YES读取权限为"email,user_about_me,user_birthday,user_interests,user_location".

FBSessionState我收到的completionHandlerIS FBSessionStateClosedLoginFailed.NSLog的错误是这样的:

Error Domain = com.facebook.sdk Code = 2"操作无法完成.(com.facebook.sdk error 2.)"UserInfo = 0x1cd68c00 {com.facebook.sdk:ErrorLoginFailedReason = com.facebook.sdk:ErrorLoginFailedReason ,com.facebook.sdk:ErrorInnerErrorKey = Error Domain = com.apple.accounts Code = 7"Facebook服务器无法满足此访问请求:验证访问令牌时出错:会话已失效,因为用户已更改密码." UserInfo = 0x1cd5b970 {NSLocalizedDescription = Facebook服务器无法满足此访问请求:验证访问令牌时出错:会话已失效,因为用户已更改密码.}}

该内部错误域是ACErrorDomain错误代码ACErrorPermissionDenied.那么,我该如何让用户重新授权该应用?

我已经尝试过openActiveSessionWithReadPermissions再次调用,但只是输出相同的错误.我也尝试了,[FBSession.activeSession closeAndClearTokenInformation]但似乎没有做任何事情(大概是因为没有activeSession).

facebook-ios-sdk

10
推荐指数
2
解决办法
4005
查看次数

iOS Facebook SDK错误域com.facebook.sdk代码2和代码7

我正在开发允许用户通过Facebook登录的应用程序(使用Facebook SDK).当用户已在iPhone设置中登录Facebook时出现错误.如果不是 - 一切正常.

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self fbSessionStateChanged:session state:state error:error];
     }];
Run Code Online (Sandbox Code Playgroud)

我已经尝试将权限设置为nil数组 - 没有任何改变.

日志是:

Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed.
(com.facebook.sdk error 2.)" UserInfo=0x1552c6c0 
{com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError,
com.facebook.sdk:ErrorSessionKey=<FBSession: 0xabe8100, state: FBSessionStateClosedLoginFailed,
loginHandler: 0x0, appID: APPIDHERE, urlSchemeSuffix: ,
tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x14b8f3d0>,
expirationDate: (null), refreshDate: (null),
attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}
Run Code Online (Sandbox Code Playgroud)

有时,Code 7的错误也会出现.我已经阅读了与此错误相关的几乎所有主题.

我的步骤是:

  1. 将我的.plist文件中的app id与FB bundle id进行比较.他们是一样的!!!
  2. 我的应用程序不是沙箱模式!
  3. 如果我[FBSession openActiveSessionWithReadPermissions:permissions改为 [FBSession openActiveSessionWithPermissions:permissions …

facebook objective-c ios facebook-sdk-3.0

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

使用[FBSession openActiveSessionWithPublishPermissions:..]时出错

我正在更新应用程序以使用最新的Facebook SDK以获得对iOS6原生Facebook支持的访问权限.它目前使用的是相当旧版本的Facebook SDK.

该应用程序需要Facebook的"publish_actions"权限才能与Facebook进行唯一的操作.

我最初认为我可以使用[FBSession openActiveSessionWithPublishPermissions: ...]但是当用户在iOS6设置中配置了Facebook时,这在iOS6上失败了.由于这一要求,它失败了,来自Facebook文档:

请注意,要使用iOS 6本机身份验证,应用程序需要更改用户请求权限的方式 - 应用程序必须将其读取和写入权限请求分开.面向iOS的Facebook SDK支持这些功能,并帮助开发人员使用它们构建适用于多个iOS版本和设备配置的应用程序.

这是一个大型的PITA,IMO.我们的偏好是提示用户一次获得许可并完成它,但每个Apple/Facebook的"新"理想是在需要但尚未授予时在上下文中提示特定权限.

目前的计划是保留iOS5用户和未在"设置"中配置Facebook的iOS6用户的旧行为.并符合使用本机访问的iOS6用户的新双提示.

问题是,最好的方法是什么? 我应该如何检测Facebook SDK是否会选择iOS6本机登录与后备机制?我忽略了一些明显的东西吗

编辑:

杰拉尔德威廉姆让我走上正轨.他的解决方案几乎可以工作,除了在iOS5中没有ACAccountTypeIdentifierFacebook.此外,如果用户阻止设置中的FB访问应用程序,则accountsWithAccountType调用将返回一个空数组.

可以通过询问帐户类型匹配标识符"com.apple.facebook"来解决第一个问题 - 这将在iOS5上返回nil,在iOS6上返回真实帐户类型对象.

但第二个问题是无法解决的.我的新计划是始终在iOS6上以只读权限打开初始会话,并在上下文中根据需要提示发布权限.在iOS5上,我仍然会打开初始会话,指定所需的publish_actions权限.这是代码:

ACAccountStore* as = [[ACAccountStore new] autorelease]; 
ACAccountType* at = [as accountTypeWithAccountTypeIdentifier: @"com.apple.facebook"]; 
if ( at != nil ) {
    // iOS6+, call  [FBSession openActiveSessionWithReadPermissions: ...]

} else  {
    // iOS5, call [FBSession openActiveSessionWithPublishPermissions: ...] 
}
Run Code Online (Sandbox Code Playgroud)

ios facebook-ios-sdk

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

iOS 6 facebook sdk 3.1.1登录错误

我尝试使用facebook登录https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/中的facebook教程来实现它但是在警报视图之后要求我允许我应用程序使用您的数据,然后按确定错误

操作无法完成 .(com.facebook.sdk错误2)

请注意iam在simulatore中,我在设置中输入了FB我的帐户,并且记录正确.

调试问题,错误结果如下:

(NSError*)$ 1 = 0x0ac77290错误域= com.facebook.sdk代码= 2"操作无法完成.(com.facebook.sdk错误2.)"UserInfo = 0xac77450 {com.facebook.sdk:ErrorLoginFailedReason = com.facebook.sdk:ErrorLoginFailedReason,com.facebook.sdk:ErrorInnerErrorKey = Error Domain = com.apple.accounts Code = 7"Facebook服务器无法满足此访问请求:没有为app存储remote_app_id"UserInfo = 0xaa91d40 {NSLocalizedDescription = Facebook服务器无法满足此访问请求:没有为应用程序存储remote_app_id}}

iphone facebook objective-c ios6

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

Facebook注册:操作无法完成(com.facebook.sdk错误2)

我正在开发一个ios phonegap应用程序.注册时我使用phonegap facebook插件.它第一次工作正常.但是现在当我尝试注册时它无法正常工作.我没有改变任何事情.我使用Xcode版本4.6.1和cordova版本2.4.0.

在此输入图像描述

图显示了我的Facebook开发者页面.

我究竟做错了什么?

请帮忙,谢谢.

facebook ios cordova xcode4.6

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

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
查看次数