[英]Getting and displaying a user's profile picture in the iOS Facebook SDK
[英]iOS - getting user's Facebook profile picture
我想从我的应用程序中从Facebook获取用户的个人资料图片。 我知道返回个人资料图片的http请求:
http://graph.facebook.com/USER-ID/picture?type=small
但是为此,我需要我的用户的用户ID。 有没有一种方法可以从某个地方获取而不使用Facebook SDK? 如果没有,有人可以告诉我一种获取用户ID(或个人资料图片)的简单方法吗?
试试这个...它在我的代码中工作正常..并且没有facebook id,您无法获得..
还有一件事,您也可以在此处传递您的Facebook用户名。
//facebookID = your facebook user id or facebook username both of work well
NSURL *pictureURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large&return_ssl_resources=1", facebookID]];
NSData *imageData = [NSData dataWithContentsOfURL:pictureURL];
UIImage *fbImage = [UIImage imageWithData:imageData];
谢谢 ..
为了获取任何用户的FacebookId,您将必须从需要打开会话的位置集成Facebook Sdk,以允许用户登录Facebook(如果用户已经登录Facebook应用,那么它将仅获得用户许可才能访问)的许可)。 完成此操作后,您将获得登录用户的用户详细信息,可从中获取他的FacebookId。
有关更多详细信息,请访问developers.facebook.com。
为了获取个人资料图片,您需要知道用户的Facebook用户ID。 可以使用Social.framework
登录到Facebook(如果您不想使用Facebook SDK)。
您可以使用ACAccountStore
来请求访问用户的Facebook帐户,如下所示:
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *facebookTypeAccount = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey: YOUR_APP_ID_KEY, ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError *error) {
...
请参阅此帖子中已经回答的说明。
有关如何获取Facebook App ID密钥(YOUR_APP_ID_KEY)的信息,请参阅本文的 步骤3 。
尽管这是一个较旧的问题,但您可以对iOS SDK 4.x进行以下操作:
迅速:
let pictureRequest = FBSDKGraphRequest(graphPath: "me/picture?type=large&redirect=false", parameters: nil)
pictureRequest.startWithCompletionHandler({
(connection, result, error: NSError!) -> Void in
if error == nil {
println("\(result)")
} else {
println("\(error)")
}
})
目标C:
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
parameters:nil
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result,
NSError *error) {
if (!error){
NSLog(@"result: %@",result);}
else {
NSLog(@"result: %@",[error description]);
}}];
答案是:
https://graph.facebook.com/v2.4/me?fields=picture&access_token=[yourAccessToken]
如果您的令牌是abcdef,则url将是:
https://graph.facebook.com/v2.4/me?fields=picture&access_token=acbdef
根据API资源管理器
您可以使用此链接
https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Dpicture&version=v2.4
然后,如果您想获取任何平台的代码,请执行以下操作:
转到页面末尾,然后按“获取代码”按钮
然后在出现的对话框中选择您的平台
你会看到代码
以下解决方案可一次性获得基本的用户信息和完整的个人资料图片...该代码使用了最新的Facebook Swift SDK(facebook-sdk-swift-0.2.0),已集成在Xcode 8.3.3上
导入FacebookCore导入FacebookLogin
@IBAction func loginByFacebook(_ sender: Any) {
let loginManager = LoginManager()
loginManager.logIn([.publicProfile] , viewController: self) { loginResult in
switch loginResult {
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login.")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("Logged in!")
let authenticationToken = accessToken.authenticationToken
UserDefaults.standard.set(authenticationToken, forKey: "accessToken")
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "/me" , parameters : ["fields" : "id, name, picture.type(large)"])) { httpResponse, result in
switch result {
case .success(let response):
print("Graph Request Succeeded: \(response)")
/* Graph Request Succeeded: GraphResponse(rawResponse: Optional({
id = 10210043101335033;
name = "Sachindra Pandey";
picture = {
data = {
"is_silhouette" = 0;
url = "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/13731659_10206882473961324_7366884808873372263_n.jpg?oh=f22b7c0d1c1c24654d8917a1b44c24ad&oe=5A32B6AA";
};
};
}))
*/
print("response : \(response.dictionaryValue)")
case .failed(let error):
print("Graph Request Failed: \(error)")
}
}
connection.start()
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.