7

Facebook iOS SDK 3.0 を使用して、facebook open-graph-api を介して Like を実装しようとしています。FbGraphObject を除いてすべてが機能しているように見えますが、これは明らかに機能しないため、どのように見えるべきかわからないためです。

私がやろうとしているのは、オブジェクトとして投稿された URL を好きにすることです。オープングラフを介した単純な Like 。

以下のコードで得られるエラーメッセージは次のとおりです。

The action you're trying to publish is invalid because it does not specify any 
reference objects. At least one of the following properties must be specified: object.

私が使用するコードは次のとおりです。

    FBGraphObject *objectToLike = [[FBGraphObject alloc]initWithContentsOfURL:[NSURL URLWithString:facebookLike.titleLabel.text]];

    FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] graphPath:@"me/og.likes" graphObject:objectToLike];

    FBRequestConnection *connection = [[FBRequestConnection alloc] init];
    [connection addRequest:requestLike
         completionHandler:
     ^(FBRequestConnection *connection, id result, NSError *error) {
         if (!error &&
             result) {

             DLog(@"NothingWentWrong");
         }

         DLog(@"MajorError: %@", error);

     }
     ];

    [connection start];

アップデート:

いくつかの詳細情報を確認し、このメソッドを使用すると推測しました: https://developers.facebook.com/docs/sdk-reference/iossdk/3.0/class/FBGraphObject/#//api/name/graphObject

どういうわけかオブジェクトを作成します。おそらく何かをする必要があるのはgraphObjectメソッドです。どんな助けでも大歓迎です。

4

4 に答える 4

6

私は実際に、これの単純で非常に汚い解決策を作成することに成功しました。解決策は最適ではないように見えますが、現在は有効な解決策です。

誰かがこの URL で Facebook のエクスプローラー ツールを使用したことがある場合: https://developers.facebook.com/tools/explorer/

Facebook が「いいね!」を共有しているときに URL がどのように表示されるかはご存知のとおりです。URL とアクセス トークンが必要です。したがって、私の解決策は、Facebook SDK からの送信を無視して、エクスプローラー ツールで使用したのと同じ URL に投稿要求を送信するだけになりました。

よく見てみると、Facebookのドキュメントでそれを参照しているようですが、実際に接続する方法を正確に説明している人はいないので、これが私の解決策です:

NSString *urlToLikeFor = facebookLike.titleLabel.text;

NSString *theWholeUrl = [NSString stringWithFormat:@"https://graph.facebook.com/me/og.likes?object=%@&access_token=%@", urlToLikeFor, FBSession.activeSession.accessToken];
NSLog(@"TheWholeUrl: %@", theWholeUrl);

NSURL *facebookUrl = [NSURL URLWithString:theWholeUrl];

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:facebookUrl];
[req setHTTPMethod:@"POST"];

NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[responseData bytes]];

NSLog(@"responseData: %@", content);

コードを見ると、URL を取得し、URL に 2 つの動的文字列を配置しています。1 つは object-url で、もう 1 つはアクセス トークンです。URLRequest を作成して POST リクエストにすると、Facebook からの応答がログに記録されるので、実際にそのようなものが通過したかどうかを確認できます。

実際のリクエストで実行できるパフォーマンスの改善がいくつかあるかもしれませんが、スローダウンが見られる場合はあなたに任せます.

私はまだ他のソリューションに興味がありますが、これが今のところ使用するソリューションです。

于 2012-08-31T09:18:19.367 に答える
2

現在、GraphAPIを介したLikeはサポートされていません。確認できるのは次のようなものです: https ://developers.facebook.com/docs/opengraph/actions/builtin/likes/

于 2012-08-30T22:51:29.783 に答える
0

多分これだけ?

    FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession]
    graphPath:@"me/og.likes"
    graphObject:[NSURL URLWithString:facebookLike.titleLabel.text]];
于 2012-08-29T08:07:44.983 に答える
0

何が機能するかはわかりませんinitWithContentsOfURLが、名前から、特定の URL (?) から実際にコンテンツをロードしようとしていると思います。

URL をテキスト パラメーターとして指定するだけで済みます。URLOpen Graph オブジェクトを表すものです。Facebook が残りの作業を行い、その URL の背後にあるページをスクレイピングして、その OG メタ タグを読み取るなどします。

于 2012-08-27T08:31:37.757 に答える