繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM