专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

欢迎界面加载用户信息

  • 接口文档地址: http://open.weibo.com/wiki/2/users/show
  • 接口地址: https://api.weibo.com/2/users/show.json
  • 请求方式(GET)
  • 请求参数:
参数 描述
access_token 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得
uid 需要查询的用户ID

代码实现

  • HMUserAccount 增加属性

    /// 用户昵称
    var screen_name: String?
    /// 用户头像地址(大图),180×180像素
    var avatar_large: String?
    
  • 修改 description

    // 对象打印信息
    override var description: String {
      let keys = ["access_token", "uid", "expires_in", "expiresDate", "screen_name", "avatar_large"]
      return dictionaryWithValues(forKeys: keys).description
    }
    
  • 修改 归档解档 函数,增加screen_nameavatar_large 属性的 归档解档

    // MARK: - 归档和解档
    /// 归档
    func encode(with aCoder: NSCoder) {
      aCoder.encode(access_token, forKey: "access_token")
      aCoder.encode(uid, forKey: "uid")
      aCoder.encode(expires_in, forKey: "expires_in")
      aCoder.encode(expiresDate, forKey: "expiresDate")
      aCoder.encode(screen_name, forKey: "screen_name")
      aCoder.encode(avatar_large, forKey: "avatar_large")
    }
    /// 解档
    required init?(coder aDecoder: NSCoder) {
      access_token = aDecoder.decodeObject(forKey: "access_token") as? String
      uid = aDecoder.decodeObject(forKey: "uid") as? String
      expires_in = aDecoder.decodeDouble(forKey: "expires_in")
      expiresDate = aDecoder.decodeObject(forKey: "expiresDate") as? Date
      screen_name = aDecoder.decodeObject(forKey: "screen_name") as? String
      avatar_large = aDecoder.decodeObject(forKey: "avatar_large") as? String
    }
    
  • HMUserAccountViewModel 添加 加载用户信息 的方法: loadUserInfo

    /**
    加载用户信息
    - parameter loadUserInfoCallBack: 回调
    */
    func loadUserInfo(completion: @escaping (Error?) -> ()) {
      // 判断access_token
      guard let access_token = userAccount?.access_token else {
          print("access_token为空")
          return
      }
    
      // 判断uid
      guard let uid = userAccount?.uid else {
          print("uid为空")
          return
      }
    
      // 5.url
      let urlString = "https://api.weibo.com/2/users/show.json"
    
      // 6.准备参数
      let parameters = ["access_token": access_token, "uid": uid]
    
      HMNetworkTool.shared.request(method: .GET, URLString: urlString, parameters: parameters, progress: nil, success: { (_, result) in
    
          let dict = result as? [String: Any]
    
          // 获取数据
          self.userAccount?.screen_name = dict?["screen_name"] as? String
          self.userAccount?.avatar_large = dict?["avatar_large"] as? String
    
          // 保存起来
          self.saveUserAccount()
    
          // 执行闭包
          completion(nil)
    
          }) { (_, error) in
              completion(error)
      }
    }
    
  • HMWelcomeViewControllerviewDidLoad 方法,去加载用户最新数据

    override func viewDidLoad() {
      super.viewDidLoad()
    
      setupUI()
    
      // 显示沙盒保存的用户的头像
      if let avatar_large = HMUserAccountViewModel.shared.userAccount?.avatar_large {
          let url = URL(string: avatar_large)
          iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))
      }
    
      // 获取最新用户数据
      HMUserAccountViewModel.shared.loadUserInfo { (error: Error?) in
          // 显示沙盒保存的用户的头像
          if let avatar_large = HMUserAccountViewModel.shared.userAccount?.avatar_large {
              let url = URL(string: avatar_large)
              self.iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))
          }
      }
    }
    

results matching ""

    No results matching ""