Как загрузить фотографии на Facebook, используя Graph API в iPhone? - PullRequest
4 голосов
/ 10 октября 2011

Я сделал одно приложение, в моем приложении я интегрировал Facebook для обмена информацией.для интеграции с Facebook я использую Graph API в приложении.Теперь в своем приложении я хочу загрузить фотографию на стену пользователя.Я использовал этот код для загрузки фото на стене пользователя.

// для загрузки фото

- (void)uploadPhoto:(id)sender {


NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Image1" ofType:@"jpg"];

NSString *message = [NSString stringWithFormat:@"I think this is a Great Image!"];

NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me/photos"];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addFile:filePath forKey:@"file"];
[request setPostValue:message forKey:@"message"];
[request setPostValue:_accessToken forKey:@"access_token"];
[request setDidFinishSelector:@selector(sendToPhotosFinished:)];
[request setDelegate:self];

[request startAsynchronous];
}
- (void)sendToPhotosFinished:(ASIHTTPRequest *)request {

// Use when fetching text data
NSString *responseString = [request responseString];

NSMutableDictionary *responseJSON = [responseString JSONValue];
NSString *photoId = [responseJSON objectForKey:@"id"];
NSLog(@"Photo id is: %@", photoId);

NSString *urlString = [NSString stringWithFormat:
                       @"https://graph.facebook.com/%@?access_token=%@", photoId, 
                       [_accessToken stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:urlString];
ASIHTTPRequest *newRequest = [ASIHTTPRequest requestWithURL:url];
[newRequest setDidFinishSelector:@selector(getFacebookPhotoFinished:)];

[newRequest setDelegate:self];
[newRequest startAsynchronous];
}

Но здесь я получаю responseString {"error": {"message":" Ошибка при проверке приложения. "," Type ":" OAuthException "}} и Идентификатор фотографии: (null)

, и изображение не загружено на стену пользователя.поэтому, пожалуйста, скажите мне, как решить эту проблему.

Ответы [ 5 ]

1 голос
/ 11 июня 2012

может помочь тебе

 //facebook post a image on wall
     NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       userImgView.image, @"picture",
                                       nil];

[facebook requestWithGraphPath:@"me/photos"
                     andParams:params
                 andHttpMethod:@"POST"
                   andDelegate:self];
1 голос
/ 11 июня 2012

ниже представлен способ публикации изображения в Facebook ...

NSMutableDictionary *variables = [NSMutableDictionary dictionaryWithCapacity:2];

    //create a UIImage (you could use the picture album or camera too)

    UIImage *picture = [UIImage imageNamed:"yourImageName"];
    //create a FbGraphFile object insance and set the picture we wish to publish on it
    FbGraphFile *graph_file = [[FbGraphFile alloc] initWithImage:picture];

    //finally, set the FbGraphFileobject onto our variables dictionary....
    [variables setObject:graph_file forKey:@"file"];

    [variables setObject:@"write your Message Here" forKey:@"message"];

    //the fbGraph object is smart enough to recognize the binary image data inside the FbGraphFile
    //object and treat that is such.....
    //FbGraphResponse *fb_graph_response = [fbGraph doGraphPost:@"117795728310/photos" withPostVars:variables];
    FbGraphResponse *fb_graph_response = [fbGraph doGraphPost:@"me/photos" withPostVars:variables];

надеюсь, это поможет вам ... :)

1 голос
/ 10 октября 2011

Сначала вы разрешили приложению загружать изображения, выполнив это (используя FBConnect SDK), и вы можете проверить все разрешения здесь

NSArray* permissions = [NSArray arrayWithObjects:@"publish_stream", @"user_photos", nil];
[facebook authorize:permissions];

Следующая проблема заключается в том, что Facebook не позволяет сообщениям, отправленным таким образом, ссылаться на изображения, размещенные на их доменах (я знаю, что это ДЕЙСТВИТЕЛЬНО раздражает, возможно, стоило бы проверить, изменились ли вещи с апреля). Я потратил немало времени, работая над этим. Я взломал его, создав URL-адрес перенаправления с помощью bitly (вы можете получить программный доступ к их службам с помощью их API, для этого есть оболочка obj-c здесь , хотя я изменил ее быть асинхронным) и отправить этот URL в сообщении.

0 голосов
/ 07 июля 2014

Вы можете использовать встроенную функцию Facebook

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: UIImageJPEGRepresentation(postImage, 1.0), @"source", self.postTextView.text, @"message", nil];
            /* make the API call */

[FBRequestConnection startWithGraphPath:@"/me/photos" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{

       if (error == nil) {
               NSLog("Success");
       }
       else {
               NSLog("Failed");
       }

}];

С помощью этого кода вы можете опубликовать изображение с сообщением. С наилучшими пожеланиями

0 голосов
/ 11 июня 2012

Facebook API использует OAuth для аутентификации запросов.Вам нужно будет использовать библиотеку, которая может запрашивать соответствующие временные / клиентские токены и генерировать соответствующие заголовки HTTP для запросов.Это довольно сложная процедура, которая включает в себя хеширование и нормализацию аргументов запроса.

Вы не можете сделать это, создав свои собственные HTTP-запросы вручную.

...