Как я могу поделиться картинкой с Facebook SDK iOs - PullRequest
0 голосов
/ 11 марта 2012

Я занимаюсь разработкой приложения для iOs 5 и внедрил Facebook SDK для iOs. Я хотел бы поделиться фотографией, так что это мой код (не работает):

if (buttonIndex==3) {


    if (facebook == nil) 
    {
        // Setup Facebook connection
        [self setUpFacebookConnection];
    }else {
        [self fbDidLogin];
    }          
}   

 }
- (void)setUpFacebookConnection
{
facebook = [[Facebook alloc] initWithAppId:@"245697495524266" 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:
                            @"offline_access", @"publish_stream", @"publish_actions", @"photo_upload", nil];

    [facebook authorize:permissions];
}
 }

 - (void)fbDidLogin{ 

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
 [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
 [defaults synchronize];


 bannerview2.hidden=YES;

 if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
 else
    UIGraphicsBeginImageContext(self.view.bounds.size);

// retrieve the current graphics context
 CGContextRef context = UIGraphicsGetCurrentContext();

// render view into context
[self.view.layer renderInContext:context];

// create image from context
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// save image to photo album
UIImageWriteToSavedPhotosAlbum(image,
                               self,
                               nil,
                               @"image.png"); 
bannerview2.hidden=NO;


NSMutableString *message = [[NSMutableString alloc] init];
[NSString stringWithFormat:@"Resultado final %@: %d vs. %@: %d. Mi jugador hizo %d puntos y cometió %d faltas.",intnomlocal, puntsl, intnomvisitant, puntsv, puntsjugadorint, faltesjugadorint];




 NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:image,     @"picture", message,@"message", nil];

  [facebook requestWithGraphPath:@"me/feed"andParams:params andHttpMethod:@"POST" andDelegate:self];    

}

Так что все это работает, если только часть совместного использования изображения в - (void) fbDidLogin. Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Вам не хватает необходимых разрешений. Согласно https://developers.facebook.com/docs/reference/api/permissions/ вам необходимо разрешение publish_stream. Однако, даже с этим разрешением, я не уверен на 100%, что вам разрешено публиковать мне / фотографии. Попробуйте сначала опубликовать в фиде!

[править] Оказывается, я был не прав. Чтобы загрузить UIImage, вам нужно разрешение user_photos, publish_stream и upload_photos и публикация мне / фотографиям - вы не можете отправлять мне / ленту с изображением для загрузки.

Более новый проводник api facebook, прямо из fb, немного лучше. https://developers.facebook.com/tools/explorer

Вы можете проверить документацию здесь в разделе «Публикация», что и где вы можете опубликовать. Обратите внимание, что вы можете загружать фотографии только в существующие альбомы, для которых вам нужен идентификатор альбома.

Вам следует реализовать протокол FBRequestDelegate в своем классе, чтобы увидеть, что не работает и как.

[править 2] проверьте этот пост: другой пост SO - похоже, вам действительно нужно разрешение publish_stream. Попробуйте еще раз, если вы не можете обойти это, я настрою тестовую среду.

0 голосов
/ 11 марта 2012

попробуйте добавить токен доступа в params dic

 NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:image,  @"picture",message,@"caption",[facebook accesstoken],@"access_token",nil];
...