我想对fatsecret服务进行授权并获得令牌。我尝试遵循https://platform.fatsecret.com/api/Default.aspx?screen=rapiauth2的文档,并用flutter重写给定的curl代码,但我无法使其正常工作。
我已经尝试了不同类型的请求(post,get),我尝试将授权放入url,并且尝试了不同的编码。不幸的是,一切都没有改变。这是我最后一次尝试:
static void _authorizeClient() async {
Map<String, String> params = {
'grant_type': 'client_credentials',
'scope': 'basic',
};
Map<String, String> headers = {
HttpHeaders.contentTypeHeader: 'application/json',
HttpHeaders.authorizationHeader:
'Basic ' + base64Encode(utf8.encode(clientId + ':' + clientSecret))
};
http.Response response = await http.post(
Uri.https('oauth.fatsecret.com', 'connect/token', params),
headers: headers);
final responseJson = json.decode(response.body);
}当我在他们的网站上运行curl代码时,我得到了一个令牌,没有问题,但我的代码就是不能工作,我总是得到一个400个错误的请求。
发布于 2019-07-01 05:47:57
Oauth不是一个简单的post请求,所以代码不会工作。你不想从头开始实现一个oauth库,因为你会因为加密、不成功的post请求以及不知道oauth流而头疼不已。我建议使用像this one这样的oAuth2库。如果您真的想创建自己的库,我可以向您推荐oauth2 specification。
也许你会说“但是当我在他们的网站上运行curl代码时,我得到了一个没有问题的令牌”,我会对此做出回应。也许网站已经有了你的证书,或者一些cookies,或者秘密,并且它在你不知道的情况下发送了这些信息。如果您使用Opera测试干净的GET和POST请求而没有任何额外数据,请尝试使用PostMan或RestMan。
https://stackoverflow.com/questions/56826621
复制相似问题