如何用Retrofit做OAuth验证?
我在尝试用 Retrofit2 发出请求到公司的OAuth后端取回 access token
基本上就是把下面的curl 命令用Retrofit2写一遍
curl -X POST
-d "grant_type=password&phone_number=123123123&password=12345"
-u "Client_Id:Client_Secret"
http://baseURL/o/token
我自己的service接口
public interface LoginService {
@POST("/o/token")
@FormUrlEncoded
Observable<LoginEntity> getAccessToken(@Field("grant_type") String grantType,
@Field("phone_number") String phoneNumber,
@Field("password") String password,
@Header("Authorization") String authorization);
}
下面是实现方法
public void login(final MySubscribe<LoginEntity> subscriber, String pn, String psw) {
mRetrofit = new Retrofit.Builder()
.baseUrl(MyFeeds.APP_BASE_URL)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
//encode pn
String real_pn = getRealPN(pn);
//encode the credential using base64
String credential = MyFeeds.CLIENT_ID+":"+MyFeeds.CLIENT_SECRET;
String auth = null;
try {
auth = "Basic " + getBase64String(credential);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
LoginService service = mRetrofit.create(LoginService.class);
Observable<LoginEntity> observable = service.getAccessToken("password", real_pn, psw, auth);
mSubscription = observable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
}
但我只得到 http500 错误.
有人可以帮下吗? 谢谢
==============
request body
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
500是服务器内部的错误。
应该去检查后台的代码。
参照这里List of HTTP status codes -- 5xx Server Error