古いバージョンの Facebook SDK for iOS では、me/picture または userId/picture を要求してプロフィール写真を取得できました。最新の SDK でこれを試すと、null 応答が返されます。
APIが変更された場合、その理由と、最良の代替手段は何ですか?
ありがとう!
古いバージョンの Facebook SDK for iOS では、me/picture または userId/picture を要求してプロフィール写真を取得できました。最新の SDK でこれを試すと、null 応答が返されます。
APIが変更された場合、その理由と、最良の代替手段は何ですか?
ありがとう!
私は同じ問題を抱えていました。何かが変わったと思います。おそらく、開発者に「通常の」方法で画像をダウンロードしてもらいたいのでしょう。
新しい SDK に付属しているハックブックの facebook サンプル コードでは、リクエスト オブジェクトではなく、通常の画像のように画像をダウンロードします。
NSString * url = [NSStringstringWithFormat:@"https://graph.facebook.com/%@/picture",facebookObjectIdString];
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
UIImage *downloadedImage = [UIImage imageWithData:data];
ご覧のとおり、他の画像と同じように URL から画像をダウンロードするだけです。NSURLRequest や sendSynchronousRequest などでダウンロードすることもできます...
これが新しい SDK のバグなのか、決定なのかを知るのは興味深いことです。
更新: 場合によっては、画像のダウンロードのアクセスを制限する Facebook オブジェクトに画像が属している場合 (ページの画像など)、access_token パラメーターを追加する必要があります。
実はまだ使えます[facebook requestWithGraphPath:@"me/picture?type=large" andDelegate:self];
しかし-(void)request:(FBRequest *)request didLoad:(id)result
、 では、 の値を使用する代わりに、NSMutableData であるresult
の画像データを取得し、そこから画像を構築します。request.responseText
例:
-(void)request:(FBRequest *)request didLoad:(id)result {
NSLog(@"Got user avatar");
UIImage *profileAvatar = [UIImage imageWithData:request.responseText];
UIImageView *avatarImageView = [[UIImageView alloc] initWithImage:profileAvatar];
[self.view addSubview:avatarImageView];
}