android - 如何用Retrofit做OAuth验证?
天蓬老师
天蓬老师 2017-04-17 16:06:06
[Android讨论组]

我在尝试用 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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
PHPz

500是服务器内部的错误。
应该去检查后台的代码。
参照这里List of HTTP status codes -- 5xx Server Error

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号