管理的例子挺好的。
官方的登录文档地址https://developers.facebook.com/ios/login-ui-control/
使用方法
第一步添加appid
在info.plist中添加FacebookAppID
第二步添加loginview。facebook已经为用户做好了登录的方法
facebook的登录有3种
1:ios6以上自带的登录
2:facebook 原生程序登录
3:网页登录
FBLoginView *loginview = [[FBLoginView alloc] init]; loginview.frame = CGRectOffset(loginview.frame, 5, 5); loginview.delegate = self; [self.view addSubview:loginview]; [loginview sizeToFit];
需要添加url schema 中添加fb+appid
appdelegate.m中添加
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { // attempt to extract a token from the url return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication fallbackHandler:^(FBAppCall *call) { NSLog(@"In fallback handler"); }]; }
下面处理loginview的回调方法
- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView; - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user; - (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView; - (void)loginView:(FBLoginView *)loginView handleError:(NSError *)error;
2收到用户信息
3退出
4:登录异常
登录以后发送消息
// Post Status Update button handler; will attempt different approaches depending upon configuration. - (IBAction)postStatusUpdateClick:(UIButton *)sender { // Post a status update to the user's feed via the Graph API, and display an alert view // with the results or an error. NSURL *urlToShare = [NSURL URLWithString:@"http://developers.facebook.com/ios"]; // This code demonstrates 3 different ways of sharing using the Facebook SDK. // The first method tries to share via the Facebook app. This allows sharing without // the user having to authorize your app, and is available as long as the user has the // correct Facebook app installed. This publish will result in a fast-app-switch to the // Facebook app. // The second method tries to share via Facebook's iOS6 integration, which also // allows sharing without the user having to authorize your app, and is available as // long as the user has linked their Facebook account with iOS6. This publish will // result in a popup iOS6 dialog. // The third method tries to share via a Graph API request. This does require the user // to authorize your app. They must also grant your app publish permissions. This // allows the app to publish without any user interaction. // If it is available, we will first try to post using the share dialog in the Facebook app FBAppCall *appCall = [FBDialogs presentShareDialogWithLink:urlToShare name:@"Hello Facebook" caption:nil description:@"The 'Hello Facebook' sample application showcases simple Facebook integration." picture:nil clientState:nil handler:^(FBAppCall *call, NSDictionary *results, NSError *error) { if (error) { NSLog(@"Error: %@", error.description); } else { NSLog(@"Success!"); } }]; if (!appCall) { // Next try to post using Facebook's iOS6 integration BOOL displayedNativeDialog = [FBDialogs presentOSIntegratedShareDialogModallyFrom:self initialText:nil image:nil url:urlToShare handler:nil]; if (!displayedNativeDialog) { // Lastly, fall back on a request for permissions and a direct post using the Graph API [self performPublishAction:^{ NSString *message = [NSString stringWithFormat:@"Updating status for %@ at %@", self.loggedInUser.first_name, [NSDate date]]; FBRequestConnection *connection = [[FBRequestConnection alloc] init]; connection.errorBehavior = FBRequestConnectionErrorBehaviorReconnectSession | FBRequestConnectionErrorBehaviorAlertUser | FBRequestConnectionErrorBehaviorRetry; [connection addRequest:[FBRequest requestForPostStatusUpdate:message] completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { [self showAlert:message result:result error:error]; self.buttonPostStatus.enabled = YES; }]; [connection start]; self.buttonPostStatus.enabled = NO; }]; } } }
以上是官方给的代码