Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Moya-无法使用身份验证凭据调用API_Ios_Swift_Authentication_Networking_Moya - Fatal编程技术网

Ios Moya-无法使用身份验证凭据调用API

Ios Moya-无法使用身份验证凭据调用API,ios,swift,authentication,networking,moya,Ios,Swift,Authentication,Networking,Moya,我正在使用django rest API框架开发一个iOS应用程序。但目前,在使用身份验证凭据调用API时,我无法取得进展 我使用Postman和curl成功地调用了api,方法是将Header设置为authenticationbearer。。但我一直无法从iOS应用程序调用它。我使用Moya调用api。我不知道下一步该怎么办 我试过的:(打电话给莫亚时) 当使用莫亚进行身份验证时,我有什么要考虑的吗?或者是用信息。PLIST等等? 或者文档中说这种方法是针对JWT令牌的,也许我的方法不适用于J

我正在使用django rest API框架开发一个iOS应用程序。但目前,在使用身份验证凭据调用API时,我无法取得进展

我使用Postman和curl成功地调用了api,方法是将Header设置为
authenticationbearer
。。但我一直无法从iOS应用程序调用它。我使用
Moya
调用api。我不知道下一步该怎么办

我试过的:(打电话给莫亚时)

当使用莫亚进行身份验证时,我有什么要考虑的吗?或者是用信息。PLIST等等?
或者文档中说这种方法是针对JWT令牌的,也许我的方法不适用于JWT和其他东西。。?给我一些建议

尝试了几个小时后。。我发现是api端点根据内容语言重定向了自己。。因此,我设置的标题在重定向时无效。因此,提前设置i18n url或设置内容语言标题都可以解决我的问题。

对于我的情况,我使用

  • Moya
    12.0.1
  • 多目标
例如:

plugins = [AccessTokenPlugin(tokenClosure: {
    let token = ...
    return token
})]
MoyaProvider<MultiTarget>(
    plugins: plugins
)
.request(MultiTarget(myAPI)) {
    ...
}

来源:

您的头变量是什么样子的?它真的覆盖了标题是什么吗?我编辑了添加标题变量的问题,我认为应该在需要时添加Accept Language标题。。有什么建议吗?真奇怪。你的API中的标题没有覆盖你的插件吗?没有,我没有覆盖插件。。我认为这是api服务器的问题,它重定向没有语言代码uri的请求,在这个过程中可能会发生一些错误
extension AccountAPI : TargetType, AccessTokenAuthorizable {

    // codes conforming variables to TargetType protocol

    public var authorizationType: AuthorizationType {
        switch self {
        case .getFacebookAccountToken:
            return .none
        default:
            return .bearer
        }
    }

    public var headers: [String: String]? {
        switch self {
            case .getFacebookAccountToken, .getEmailAccountToken: // post requests
            return ["Content-type":"application/x-www-form-urlencoded"]
        default:
            return ["Content-type":"application/json"]
        }
    }
}
plugins = [AccessTokenPlugin(tokenClosure: {
    let token = ...
    return token
})]
MoyaProvider<MultiTarget>(
    plugins: plugins
)
.request(MultiTarget(myAPI)) {
    ...
}
extension MultiTarget: AccessTokenAuthorizable {

    public var authorizationType: AuthorizationType {
        guard let target = target as? AccessTokenAuthorizable else { return .none }
        return target.authorizationType
    }

}