2014-02-22 6 views
0

페이 스북 sdk없이 iOS에서 페이스 북 로그인 방법 (iOS6 및 iOS7 지원). 내 앱이 Facebook 로그인을 사용 중이며 사용자가 Facebook에서 게시물을 공유 할 수 있습니다. 또한 Facebook에 사용자 ID와 인증 토큰을 보내야합니다.어떻게 페이스 북없이 페이스 북 로그인 페이스 북 sdk

앞서 나는 내가 페이스 북 SDK 3.11이를 위해 엑스 코드 5

와 현재에서 iOS 5하지만 내 아이폰 OS 대상> = iOS6의 사용 지원했다. 조사 결과, SLComposeViewController, UIActivityViewController 또는 SLRequest을 사용하여 소식을 공유 할 수 있음을 알게되었습니다. 이렇게하면 공유 문제는 해결되지만 Facebook 로그인 및 인증 토큰은 어떻게 얻을 수 있습니까?

페이스 북의 로그인에 , 공유를 위해 SLComposeViewController을 시도했지만이 좋은 해결책입니까? (여기에서 Facebook 기본 공유 대화 상자를 표시하고 싶습니다. 따라서 공유하기 위해 SLRequest를 사용하지 않았습니다.)

나는 this link을 참조했습니다. 이것이 앞으로 나아갈 수있는 최선의 해결책입니까?

답변

0

만 배포 대상 6 - 당신은 설정에서 번들 ID를 설정하면 한 - 경우, develelopers.facebook.com - 당신은

페이스 북 SDK를하지 않고 다음과 같이 할 다음 PLIST에 fb_app_id 설정

#import <Social/Social.h> 
#import <Accounts/Accounts.h> 
#define FB_APP_ID @"45666675444" // ur id here 
@interface OGShareViewController() 
@property (strong, nonatomic) ACAccountStore *accountStore; 
@property (strong, nonatomic) ACAccount *facebookAccount; 
@property (strong, nonatomic) ACAccountType *facebookAccountType; 
@end 

-(void)viewDidLoad 
{ 
[self getMyDetails]; 
} 
- (void) getMyDetails { 
    if (! _accountStore) { 
     _accountStore = [[ACAccountStore alloc] init]; 
    } 

    if (! _facebookAccountType) { 
     _facebookAccountType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 
    } 

    NSDictionary *options = @{ ACFacebookAppIdKey: FB_APP_ID }; 

    [_accountStore requestAccessToAccountsWithType: _facebookAccountType 
              options: options 
             completion: ^(BOOL granted, NSError *error) { 
              if (granted) { 
               NSArray *accounts = [_accountStore accountsWithAccountType:_facebookAccountType]; 
               _facebookAccount = [accounts lastObject]; 

               NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me"]; 

               SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook 
                         requestMethod:SLRequestMethodGET 
                            URL:url 
                          parameters:nil]; 
               request.account = _facebookAccount; 

               [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
                NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseData 
                                 options:NSJSONReadingMutableContainers 
                                 error:nil]; 
                NSLog(@"id: %@", responseDictionary[@"id"]); 
                NSLog(@"first_name: %@", responseDictionary[@"first_name"]); 
                NSLog(@"last_name: %@", responseDictionary[@"last_name"]); 
                NSLog(@"gender: %@", responseDictionary[@"gender"]); 
                NSLog(@"city: %@", responseDictionary[@"location"][@"name"]); 
                NSLog(@"user name: %@", responseDictionary[@"username"]); 

//             http://graph.facebook.com/facebook/picture?type=normal 
                NSString *userPic = [NSString stringWithFormat:@" http://graph.facebook.com/%@/picture?type=normal", responseDictionary[@"username"] 
                      ]; 
                 NSLog(@"profile pic link: %@", userPic); 


               }]; 
              } else { 
               [self showAlert:@"Facebook access for this app has been denied. Please edit Facebook permissions in Settings."]; 
              } 
             }]; 
} 

- (void) showAlert:(NSString*) msg { 
    dispatch_async(dispatch_get_main_queue(), ^(void) { 
     UIAlertView *alertView = [[UIAlertView alloc] 
            initWithTitle:@"WARNING" 
            message:msg 
            delegate:nil 
            cancelButtonTitle:@"OK" 
            otherButtonTitles:nil]; 
     [alertView show]; 
    }); 
}