使用Uber iOS SDK从tokenString创建AccessToken失败

时间:2017-09-25 03:40:32

标签: ios uber-api

我正在使用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等。

1 个答案:

答案 0 :(得分:1)

正如您所观察到的,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)! 协议的事实,并通过该方法传入你的JSON。

>> syms x;
syms a;
syms b;

f_x = a*(1+cos(3*x));
y_x = exp(-b*f_x);
z_x = int(y_x, x, 0, 2*pi)

z_x =
2*pi*exp(-a*b)*besselj(0, a*b*1i)