2012-04-15 7 views
0

Я пытаюсь опубликовать изображение на Facebook. Вчера я получил его, но сегодня я проверил его снова, и он не работает: S. Я не могу найти проблему. Я изменил некоторые вещи, но ни один из методов, с которыми взаимодействует Facebook. Я надеюсь, что кто-то может мне помочь.Опубликовать UIImage Проблемы с Facebook

Я получил все в своем представлении Controller, потому что он регистрируется только тогда, когда пользователь запрашивает.

Я отлаживал его, и вызывается только «publishFacebook», потому что я его называю. Он отправляется в Facebook и запрашивает разрешения, а затем вы возвращаетесь и ничего не происходит.

Правильные схемы URL.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb235694579858240</string> 
     </array> 
    </dict> 
</array> 
</plist> 

ViewController.h

импорт "FBConnect.h"

@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UIActionSheetDelegate, UIGestureRecognizerDelegate, MFMailComposeViewControllerDelegate, FBSessionDelegate, FBDialogDelegate, FBRequestDelegate> 

@property (nonatomic, retain) Facebook *facebook; 
-(void)postWall; 

ViewController.m

-(void) publishFacebook:(UIImage *)img { 

    //start the facebook action by clicking any button 
    _publishedImage = img; 
    _facebook = [[Facebook alloc] initWithAppId:@"235694579858240" andDelegate:self]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     _facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     _facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 

    if (![_facebook isSessionValid]) { 
     NSArray *permissions = [[NSArray alloc] initWithObjects: 
           @"user_photos", 
           @"user_likes", 
           @"read_stream", 
           nil]; 
     _facebook.sessionDelegate = self; 
     [_facebook authorize:permissions]; 
    }else{ 
     [self postWall]; 
    } 
} 


    - (void)fbDidLogin { 
     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
     [defaults setObject:[_facebook accessToken] forKey:@"FBAccessTokenKey"]; 
     [defaults setObject:[_facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
     [defaults synchronize]; 
     [self postWall]; 
    } 

    - (void)postWall{ 

     //NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]; 
     NSData *imageData = UIImagePNGRepresentation(_publishedImage); 
     //[NSData dataWithContentsOfFile:filePath] 
     NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             @"Check out my awesome image!. I make it with Trolling for iOS", @"message", imageData, @"source", nil]; 
     [_facebook requestWithGraphPath:@"me/photos" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

     NSLog(@"Image posted"); 

     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Image Posted" message:@"Your image was successfully posted of facebook" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
     [alertView show]; 
    } 

    -(void)fbDidNotLogin:(BOOL)cancelled{ 
     if (cancelled) { 
      UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Could not Login" message:@"Facebook Cannot login please try again" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
      [alertView show]; 
     } 
    } 


- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [_facebook handleOpenURL:url]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [_facebook handleOpenURL:url]; 
} 

Благодаря

+2

Как насчет appDelegate? Правильно ли он правильно подключен, чтобы получать то, что Facebook возвращается при возвращении с фона? – Stavash

+0

Nop my appDelegate не имеет ничего, но почему я тестировал и работает, а затем снова тестировал и не работал ?. Или что мне нужно надеть на приложение appDelegate? - (BOOL) приложение: (UIApplication *) application handleOpenURL: (NSURL *) url {? я стараюсь и ничего – Edig

+2

Вам нужно внимательно следить за учебником Facebook и все должно работать: https://developers.facebook.com/docs/mobile/ios/build/ Если это не поможет, пожалуйста, напишите точно, что не работает, поэтому мы можем Помогите. Удачи – Stavash

ответ

1

Вы должны внимательно следить за воспитателем на Facebook ial и все должно работать: developers.facebook.com/docs/mobile/ios/build

Единственная настройка, в которой вы нуждаетесь, - это запустить процесс входа в систему в результате вызова IBAction UIButton. Остальное - это точно такой же поток. Это довольно деликатный процесс, и его очень сложно отладить, если вы пропустите что-то.

+0

Спасибо, я реализую это в своем деле для публикации. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (publishFacebook :) name: @ "facebook" object: nil]; – Edig

Смежные вопросы