Facebook登录错误

时间:2014-07-15 07:35:06

标签: ios objective-c facebook-ios-sdk

应用程序需要通过Facebook帐户登录。如果Facebook帐户未在手机中配置它工作正常并成功登录应用程序但是当配置Facebook帐户并尝试登录应用程序时它会给我一个错误

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

查看我的源代码

AppDelegate.h

#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) FBSession *session;
@end

AppDelegate.m

#import "AppDelegate.h"
#import <FacebookSDK/FacebookSDK.h>

@implementation AppDelegate
@synthesize session = _session;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [FBProfilePictureView class];
    return YES;
}

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


Login.h

#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@interface Login : UIViewController<FBLoginViewDelegate>
@property (strong, nonatomic) id<FBGraphUser> loggedInUser;
@end

Login.m

#import "Login.h"
#import <FacebookSDK/FacebookSDK.h>

@interface Login ()
{
    FBLoginView *loginview;
}
@property (strong, nonatomic) IBOutlet UIButton *FB_login;

@end

@implementation Login

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    loginview = [[FBLoginView alloc] init];
    loginview = [[FBLoginView alloc] initWithReadPermissions:[NSArray arrayWithObjects:@"email",@"public_profile",nil]];
    loginview.frame =CGRectMake(10,100, 280, 55);
loginview.delegate = self;
    [self.view addSubview:loginview];
}

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView {

    NSLog(@"Logged In");
}

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                            user:(id<FBGraphUser>)user {
    NSLog(@"User info ");
}

- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView {
    NSLog(@"Logged out");
    [FBSession.activeSession closeAndClearTokenInformation];
}

- (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error {
    NSLog(@"FBLoginView encountered an error=%@", error);
}

1 个答案:

答案 0 :(得分:0)

请务必先将您的权限设置为“电子邮件”,“代理的应用无法在未先安装的情况下请求发布权限。”

loginview.readPermissions = @[@"email"];

还要确保您的制作应用已在developers.facebook.com中正确设置

https://developers.facebook.com/docs/ios/getting-started/#prerequisites