【问题标题】:iOS - getting user's Facebook profile pictureiOS - 获取用户的 Facebook 个人资料图片
【发布时间】:2014-06-30 12:24:14
【问题描述】:

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

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

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

【问题讨论】:

  • 但是必须有用户标识符吧?您的代码如何神奇地知道您需要 XYZ 用户的个人资料图片?第二件事,您提到的网址没有使用任何SDK,它是一个简单的网址!
  • 我知道 url 只是一个简单的 url(这就是我喜欢它的原因)。我想如果 iPhone 上安装了 Facebook 应用程序,也许 iPhone 可以知道用户 ID。
  • 你获取用户配置文件 ID
  • 用户 ID 与他们的 FB 用户名相同,包括任何数字,无论如何您都需要在 FB 上找到他们!
  • 我知道我可以要求用户输入他的用户名,应用程序将执行此请求。我想知道 iPhone 是否有办法知道用户名。

标签: ios facebook


【解决方案1】:

试试这个...它在我的代码中运行良好..没有 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 SDK?
  • yes ... 使用 facebook sdk 获取 facebook id 并使用 .. 它工作正常,因为我在 2-3 天之前使用过这个 ..
  • 您能否解释一下如何使用 Facebook sdk 获取 Facebook id?
【解决方案2】:

要获取任何用户的 FacebookId,您必须从需要打开会话的地方集成 Facebook Sdk 允许用户登录到 Facebook(如果用户已经登录到 Facebook 应用程序,那么它只需要用户的许可获取权限)。完成此操作后,您将获得登录用户的用户详细信息,您可以从中获取他的 FacebookId。

更多详情请查看developers.facebook.com。

【讨论】:

    【解决方案3】:

    为了获取个人资料图片,您需要知道用户的 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 应用 ID 密钥 (YOUR_APP_ID_KEY) 的信息,请查看article 中的步骤 3

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        答案是:

        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

        那么,如果您想获取任何平台的代码,请执行以下操作:

        转到页面末尾并按“获取代码”按钮

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

        你会看到代码

        【讨论】:

          【解决方案6】:

          以下解决方案一次性获取基本用户信息和完整尺寸的个人资料图片... 该代码使用最新的 Swift SDK for Facebook(facebook-sdk-swift-0.2.0),集成在 Xcode 8.3.3

          导入 FacebookCore 导入 Facebook 登录

          @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()
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-03
            • 2013-11-20
            相关资源
            最近更新 更多