Skip to content

Instantly share code, notes, and snippets.

@yuuki1224
Created February 25, 2014 10:43
Show Gist options
  • Save yuuki1224/9206676 to your computer and use it in GitHub Desktop.
Save yuuki1224/9206676 to your computer and use it in GitHub Desktop.
#import <FacebookSDK/FacebookSDK.h>
#import "FacebookManager.h"
@implementation FacebookManager
static FacebookManager* _FacebookManager;
+ (FacebookManager*)sharedManager;
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_FacebookManager = [[FacebookManager alloc] init];
});
return _FacebookManager;
}
- (BOOL)isLogin
{
return _session != nil && [_session isOpen];
}
- (BOOL)isEmptyCache
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userName = [defaults stringForKey:KEY_DEFAULT_FACEBOOK_USERNAME];
return (userName == NULL) ? YES : NO;
}
- (void)login
{
FBSessionTokenCachingStrategy* tokenCachingStrategy = [[FBSessionTokenCachingStrategy alloc] initWithUserDefaultTokenInformationKeyName:KEY_DEFAULT_FACEBOOK_TOKEN];
_session = [[FBSession alloc] initWithAppID: nil permissions:@[@"basic_info",@"user_birthday"] defaultAudience: FBSessionDefaultAudienceFriends urlSchemeSuffix: nil tokenCacheStrategy: tokenCachingStrategy];
[_session openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if (status == FBSessionStateOpen) {
FBRequest *me = [[FBRequest alloc] initWithSession:_session
graphPath:@"me"];
[me startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *user,
NSError *error) {
if (error) {
NSLog(@"Couldn't get info : %@", error.localizedDescription);
return;
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userName = user.username;
[defaults setObject:userName forKey:KEY_DEFAULT_FACEBOOK_USERNAME];
[defaults synchronize];
}];
} else if (status == FBSessionStateClosed) {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey: KEY_DEFAULT_FACEBOOK_USERNAME];
[defaults synchronize];
}
}];
}
- (BOOL)logout
{
if (_session != nil) {
[_session closeAndClearTokenInformation];
_session = nil;
return YES;
}
return NO;
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment