8

Facebook iOS SDK では、次のようなクエリを要求できます。

[_facebook requestWithGraphPath:@"me/feed" andDelegate:self];

しかし、多くの場合、Facebook は、たとえば、以前の日付への移動を要求するために使用される URL を含む限定的な JSON 応答を返します。したがって、JSON 応答では、次のようになります。

data =     ( /*things here... status updates, photos, etc...*/
    );
paging =     {
        next = "https://graph.facebook.com/me/feed?sdk=ios&sdk_version=2&access_token= <something>&until=2010-12-04";
        previous = "https://graph.facebook.com/me/feed?sdk=ios&sdk_version=2&access_token=<something>&since=<something>";
    };

私が疑問に思っているのは... 以前の URL に移動するにはどうすればよいですか? SDK はこれを行うためのインターフェイスを提供していますか?

編集: 可能であれば、Facebook は現在 REST API を廃止しているため、実際には Graph API で回答が必要です。

ボーナス: Facebook から返される時間形式を誰かが説明できる場合。私は2010-09-13T00%3A25%3A16%2B0000例として持っています。

4

5 に答える 5

7

メソッドを Facebook サブクラスまたはそれ自体に追加するために必要なものすべて

- (void)requestWithURLString:(NSString *)fullURL
               andHttpMethod:(NSString *)httpMethod
                 andDelegate:(id <FBRequestDelegate>)delegate {
    [self openUrl:fullURL params:nil httpMethod:httpMethod delegate:delegate];
}

ps 2 番目のパラメーター "httpMethod" は常に @"GET" である可能性があります。省略できます

于 2011-02-07T21:54:25.637 に答える
6

FacebookのiOSSDKバージョン3がリリースされると、元の回答は現在のバージョンには適用されなくなります。

新しいバージョンではこれが簡単にならないので、私はいくつかの掘り下げをしなければなりませんでした。新しいSDKがテーブルに対してこれを行うのに役立つFBGraphObjectPagingLoaderクラスでこれを行う方法の例を見つけました。それは信じられないほど醜いですが、彼らが使用しているので、それは「推奨される」方法だと思います。

これが彼らのコードの私のわずかな変更です(元々はFBGraphObjectPagingLoaderのfollowNextLinkメソッドにあります)

FBRequest *request = [[[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:nil] autorelease];
FBRequestConnection *connection = [[[FBRequestConnection alloc] init] autorelease];
[connection addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
     // Do some stuff
 }];

// Override the URL using the one passed back in 'next'.
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url];
connection.urlRequest = urlRequest;

[connection start];

もちろん、必要に応じて、ライブラリを変更し、これをクラス自体にカプセル化することもできます。

于 2012-08-31T22:44:55.337 に答える
2

次のようなことができます。

[appDelegate.fb requestWithGraphPath:@"me/home"
                           andParams:[NSMutableDictionary dictionaryWithObject:@"2011-01-27T04%3A48%3A50%2B0000" forKey:@"since"]
                         andDelegate:self];

pagingフィードの部分で、nextpreviousURL が 1 つのクエリ パラメータ (untilおよび) だけ異なっていることに注意してくださいsince。これから取得した値を使用して、結果の次のページと前のページを取得できます。

お役に立てれば!

于 2011-02-04T03:59:07.567 に答える
1

はい、API で関数を呼び出して結果を取得できます。コードの下で使用したユーザーのステータスを取得する場合は、stream.get メソッドを使用できます。ここで見つけることができますhttp://developers.facebook.com/docs/reference /rest/stream.get/

NSMutableDictionary * params = [[NSMutableDictionary alloc] init];
    [params setValue:[NSString stringWithFormat:@"%@", appDelegate.user_id] forKey:@"uid"];
    [params setValue:@"150" forKey:@"limit"];
    [params setValue:@"results" forKey:@"callback"];


    [_facebook requestWithMethodName: @"status.get"
       andParams: params
       andHttpMethod: @"POST"
                         andDelegate: self];

このコードは目的に合わせて使用​​できます。

于 2011-02-03T15:46:47.957 に答える
0

少なくとも日付形式に関する限り、RFC 3339 形式の変形です。私の知る限り、iOS にはそのタイプの事前定義されたフォーマッタがありません。

私は日付フォーマッターを作成し、それを維持しています (作成が妙に遅いです) ので、FB データを扱うときに簡単に変換できます。

        NSDateFormatter * sRFC3339DateFormatter = nil;
        NSLocale * enUSPOSIXLocale;

        sRFC3339DateFormatter = [[NSDateFormatter alloc] init];
        enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];

        [sRFC3339DateFormatter setLocale:enUSPOSIXLocale];
        [sRFC3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"];
        [sRFC3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

このようなフォーマッタがあれば、簡単に相互に変換できます。

NSDate* myDate = nil;
myDate = [sRFC3339DateFormatter dateFromString:@"2011-01-27T04%3A48%3A50%2B0000"];

NSURL メソッドを使用すると、URL を文字列の辞書に分割するのは非常に簡単です。

于 2011-11-23T19:55:24.030 に答える