Предполагается, что вы используете последнюю версию iOS iOS SDK Facebook и объявили экземпляр класса Facebook
с именем facebook
:
Сначала проверьте права доступа
- (void)setupFacebook
{
NSString *accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"FBAccessToken"];
NSDate *tokenExpiryDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"FBExpirationDate"];
facebook.accessToken = accessToken;
facebook.expirationDate = tokenExpiryDate;
if ([facebook isSessionValid] == NO)
{
NSLog(@"Not logged in yet. Let's do it!");
NSArray *permissions = [NSArray arrayWithObjects:@"read_stream", @"offline_access", @"publish_stream", nil];
[facebook authorize:permissions delegate:self];
} else {
NSLog (@"Already logged in and ready to roll.");
[self uploadPhoto]
}
}
Ответы на запрос аутентификации будут доступны через методы делегата ниже. Здесь вы можете сохранить accessToken и tokenExpiryDate в NSUserDefaults, чтобы сохранить учетные данные для входа.
-(void)fbDidLogin
-(void)fbDidNotLogin:(BOOL)cancelled
Как только вы вошли в систему и получили необходимые разрешения, можно вызывать этот метод
- (void)uploadPhoto
{
UIImage *image = // Your image here
NSString *graphPath = @"me/photos";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:image, @"picture", "Test caption", "caption"];
[facebook requestWithGraphPath:graphPath andParams:params andHttpMethod:@"POST" andDelegate:self];
}
Ответы на вызов загрузки будут доступны через методы делегата ниже:
- (void)request:(FBRequest *)request bodyDataUploadProgress:(CGFloat)progress
- (void)request:(FBRequest *)request didLoad:(id)result
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error
Надеюсь, если поможет.
Рог