1

これが簡単なコードです

UIImage *ScreenShot = [self getScreenshot];

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"Name", @"name",
                               @"Caption.", @"caption",
                               @"Description.", @"description",
                               @"www.example.com", @"link",
                               ScreenShot, @"picture",               
                               nil];

[ facebook dialog:@"feed"
                  andParams:params
                andDelegate:self];

そして、私がコンパイルすると、このメッセージが表示されます

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage length]: unrecognized selector sent to instance 0x1288bb90' *** First throw call stack:
4

3 に答える 3

5

画像を壁に直接アップロードすることはできません。壁に公開するときは、画像を壁にリンクするだけです。したがって、最初にUIImageをどこかにアップロードする必要があります。2つのオプションがあります:

  1. あなた/いくつかのサーバーにアップロードし、それにリンクするウォールポストを公開します。
  2. Facebookのアルバムにアップロードします。それを行うことについてグラフAPIを確認してください、それはかなり簡単です
于 2012-06-17T10:56:17.567 に答える
1

ここで何をしているのかを確認するために、FacebookAPIを調べました。私の考えでは、これは

http://www.facebook.com/dialog/feed?
  app_id=123050457758183&
  link=http://developers.facebook.com/docs/reference/dialogs/&
  picture=http://fbrell.com/f8.jpg&
  name=Facebook%20Dialogs&
  caption=Reference%20Documentation&
  description=Using%20Dialogs%20to%20interact%20with%20users.&
  redirect_uri=http://www.example.com/response

Facebookがあなたに何をしてほしいかを明確に述べています。pictureパラメータが画像自体ではなく、画像へのリンクであることがわかりますか?最初に画像をアップロードしてから、画像へのリンクをこのパラメータに入れる必要があります。

これがあなたのコードの唯一のエラーであるかどうかはわかりませんが、確かに大きなエラーです。

于 2012-06-17T10:15:00.230 に答える
-1

プロジェクトに画像をインポートし、行UIImage * ScreenShot = [self getScreenshot]を次のように変更してみてください: UIImage *ScreenShot = [UIImage imageNamed:@"yourimage.png"];

それが機能する場合は、「getScreenshot」メソッドに問題がある可能性があります。

私はこれを私のアプリに使用します:

    UIImage *ImageView = [UIImage imageNamed:@"anImage.png"];
        NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       ImageView, @"picture",@"Name", @"name",
                                       nil];

         //Let's post it
         [facebook requestWithGraphPath:@"me/photos"
         andParams:params
         andHttpMethod:@"POST"
         andDelegate:self];


-(void)request:(FBRequest *)request didLoad:(id)result{
    if ([result objectForKey:@"id"]) {


        UIAlertView *al = [[UIAlertView alloc] initWithTitle:@"MyApp" message:@"Your image has been posted on your wall!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [al show];
        [al release];
    }
}
于 2012-06-17T10:07:38.023 に答える