2014-02-22 94 views
0

如何在沒有Facebook sdk的Facebook登錄(我支持iOS6和iOS7)。 我的應用程序使用Facebook登錄,用戶可以在Facebook上分享信息。此外,我需要將Facebook用戶ID和身份驗證令牌發送到我的服務器。如何使用Facebook登錄iOS> = 6不使用Facebook sdk

早些時候,我支持的iOS 5,但現在我的iOS目標> = iOS6的和Xcode 5

爲此,我使用Facebook的SDK 3.11。從研究中,我知道我們可以使用SLComposeViewControllerUIActivityViewControllerSLRequest來分享帖子。這將解決我的共享問題,但如何做Facebook登錄並獲得身份驗證令牌?

我試過SLRequest用於Facebook登錄和SLComposeViewController用於共享,那麼這是一個很好的解決方案嗎? (在這裏,我想顯示Facebook本地共享對話框。所以我沒有使用SLRequest來分享帖子,因爲我們必須爲它查看。)

我指的是this link。這是繼續前進的最佳解決方案嗎?

回答

0
只有

- 如果你已經部署目標6 - 你已經設置的設置軟件包ID,develelopers.facebook.com - 你已經在你的plist設置fb_app_id然後

做這樣沒有Facebook的SDK,

#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]; 
    }); 
} 
相關問題