我试图在使用颤振时达到这个终点。https://docs.particle.io/reference/device-cloud/api/#generate-an-access-token
我已经在 POSTMAN 和 curl 上工作了
curl version:
curl https://api.particle.io/oauth/token \
-u particle:particle \
-d grant_type=password \
-d "my.email@gmail.com" \
-d "my_password"
在 curl 和 postman 上,我都会收到带有访问令牌的响应。
但是当我尝试在 Flutter 上实现这一点时,我收到了错误响应。这是我在 Flutter 上的代码。
Future<Response> getPublicKey() async {
LoginRequestModel requestModelBody = LoginRequestModel(grantType: "password",
username: "my.email@gmail.com", password: "my_password");
Map<String, dynamic> requestBody = requestModelBody.toJson();
String bodyString = json.encode(requestBody);
// String formBody = Uri.encodeQueryComponent(bodyString);
print("Body string: "+bodyString);
String url = "https://api.particle.io/oauth/token";
String credentials = "particle:particle";
Map<String, String> headers = {
HttpHeaders.contentTypeHeader: "application/x-www-form-urlencoded",
HttpHeaders.authorizationHeader: "Authorization $credentials",
};
return await post(url, headers: headers, body: bodyString);
}
打印出正文字符串的打印语句打印出:
{"grant_type":"password","username":"my.email@gmail.com","password":"my.email@gmail.com"}
这是我回来的错误:
{"error":"invalid_request","error_description":"Invalid or missing grant_type parameter"}
我猜我的表单编码错误,但我无法找出正确的方式来形成编码主体。
问题:如何使用 Flutter访问此处记录的 REST 端点?