iOS - 获取用户的Facebook个人资料图片

时间:2014-06-30 12:24:14

标签: ios facebook

我想在我的应用中从Facebook获取用户的个人资料照片。我知道返回个人资料图片的http请求:

http://graph.facebook.com/USER-ID/picture?type=small

但为此,我需要用户的用户ID。 有没有办法在不使用Facebook SDK的情况下从某个地方获取? 如果没有,有人可以告诉我一个简单的方法来获取用户的ID(或个人资料图片)吗?

6 个答案:

答案 0 :(得分:9)

试试这个...它在我的代码中工作得很好..没有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];

谢谢..

答案 1 :(得分:1)

要获得任何用户的FacebookId,您必须整合Facebook Sdk,您需要打开会话,允许用户登录Facebook(如果用户已经登录Facebook应用程序,那么它只需要用户的许可获得权限的访问权限)。一旦你这样做,你将获得登录用户的用户详细信息,从那里你可以获得他的FacebookId。

有关详细信息,请查看developers.facebook.com。

答案 2 :(得分:0)

要获取个人资料照片,您需要知道用户的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) {
                                        ...

请参阅this post中已经回答的说明。

有关如何获取Facebook App ID密钥(YOUR_APP_ID_KEY)的信息,请查看此article中的第3步

答案 3 :(得分:0)

虽然这是一个较旧的问题,但您可以使用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]);
     }}];

答案 4 :(得分:0)

答案是:

https://graph.facebook.com/v2.4/me?fields=picture&access_token=[yourAccessToken]

如果您的令牌是abcdef 然后网址将是:

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

然后,如果你想获得任何平台的代码,请执行以下操作:

转到页面末尾,然后按&#34;获取代码&#34;按钮

enter image description here

然后在出现的对话框中选择你的平台

enter image description here

您将看到代码

答案 5 :(得分:0)

以下解决方案一次性获取必要的用户信息和完整尺寸的个人资料图片... 该代码使用最新的Swift SDK for Facebook(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()
        }
    }
}