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