管理的例子挺好的。
官方的登录文档地址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;
}];
}
}
}
以上是官方给的代码