如何使用Facebook登录iOS> = 6不使用Facebook sdk
问题描述:
如何在没有Facebook sdk的Facebook登录(我支持iOS6和iOS7)。 我的应用程序使用Facebook登录,用户可以在Facebook上分享信息。此外,我需要将Facebook用户ID和身份验证令牌发送到我的服务器。如何使用Facebook登录iOS> = 6不使用Facebook sdk
早些时候,我支持的iOS 5,但现在我的iOS目标> = iOS6的和Xcode 5
为此,我使用Facebook的SDK 3.11。从研究中,我知道我们可以使用SLComposeViewController
,UIActivityViewController
或SLRequest
来分享帖子。这将解决我的共享问题,但如何做Facebook登录并获得身份验证令牌?
我试过SLRequest
用于Facebook登录和SLComposeViewController
用于共享,那么这是一个很好的解决方案吗? (在这里,我想显示Facebook本地共享对话框。所以我没有使用SLRequest来分享帖子,因为我们必须为它查看。)
我指的是this link。这是继续前进的最佳解决方案吗?
答
只有
- 如果你已经部署目标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];
});
}