【问题标题】:Creating AccessToken from tokenString with Uber iOS SDK failing使用 Uber iOS SDK 从 tokenString 创建 AccessToken 失败
【发布时间】:2017-09-26 02:41:40
【问题描述】:

我在 Uber iOS SDK 中使用自定义授权,在我的 iOS 代码中创建 AccessToken 时遇到问题。这是我从服务器获得的响应,似乎是有效的访问令牌:

{
"access_token":"token here",
"expires_in":2592000,
"token_type":"Bearer",
"scope":"all_trips request",
"refresh_token":"refresh token here",
"last_authenticated":0
}

然后我将它传递给 AccessToken 初始化程序,如下所示:

let jsonString = //response from server as above
let accessToken = AccessToken(tokenString: jsonString)

我的访问令牌已创建(即非零),但没有填充任何相关属性。

accessToken //non-nil
accessToken.expirationDate //nil
accessToken.refreshToken //nil

奇怪的是,accessToken.tokenString 包含上面的原始jsonString

我做错了吗?

编辑 翻遍Uber项目的AccessToken.swift源文件,发现如下:

@objc public init(tokenString: String) {
        super.init()
        self.tokenString = tokenString
    }

似乎它从未真正创建过refreshToken 等。

【问题讨论】:

    标签: ios uber-api


    【解决方案1】:

    正如您所观察到的,tokenString 只是访问令牌本身。如果您想解析 JSON 本身,我建议使用模型符合 Decodable 协议的事实,并通过该方法传入您的 JSON。

    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .secondsSince1970
    let accessToken = try? decoder.decode(AccessToken.self, from: jsonData)
    // If you need to convert a string to data, use String.data(using: .utf8)!
    

    【讨论】:

    • 谢谢爱德华!
    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    相关资源
    最近更新 更多