oAuth 1.0 获取请求改造 android

Posted

技术标签:

【中文标题】oAuth 1.0 获取请求改造 android【英文标题】:oAuth 1.0 get request retrofit android 【发布时间】:2018-01-16 13:11:36 【问题描述】:

我想使用 Retrofit 实现 oAuth 1.0 获取请求,但无法获得响应。

邮递员的回应:


    "1": 
        "entity_id": "1",
        "parent_id": "0",
        "position": "0",
        "level": "0",
        "name": "Root Catalog"
    ,
    "2": 
        "entity_id": "2",
        "parent_id": "1",
        "position": "1",
        "level": "1",
        "name": "Default Category",
        "is_active": "1"
    

我的界面是:

 @GET("/api/rest/categories/?")
    @Headers( "Content-Type: application/json")
    Call<ResponseBody> getProduct( @Field("oauth_consumer_key") String grantType,
                                   @Field("oauth_token") String username,
                                   @Field("oauth_signature_method") String sig,
                                   @Field("oauth_timestamp") String timS,
                                   @Field("oauth_nonce") String nonc,
                                   @Field("oauth_version") String vers,
                                   @Header("Authorization") String authorization);

方法调用是:

private void callService()

 byte[] credentials = "CONSUMER_SECRETE:TOKEN_SECRETE".getBytes();
 String basicAuth = "Basic " + Base64.getEncoder().encodeToString(credentials);

UserClient apiService = ApiClient.getClient().create(UserClient.class);
Call<ResponseBody> call = apiService.getProduct("CONSUMER_KEY","TOKEN_KEY","HMAC-SHA1","1502218838","RuH2FG","1.0",basicAuth);
call.enqueue(new Callback<ResponseBody>() 
    @Override
    public void onResponse(Call<ResponseBody>call, Response<ResponseBody> response) 
        if (response.isSuccessful())
            if (response.isSuccessful())

            else
                Toast.makeText(getApplicationContext(), "Failed", Toast.LENGTH_LONG).show();
            
        else
            //First Option of error handling..
            switch(response.code())
                case 404:
                    Toast.makeText(getApplicationContext(),R.string.server_error404, Toast.LENGTH_SHORT).show();
                    break;
                case 500:
                    Toast.makeText(getApplicationContext(),R.string.server_error500, Toast.LENGTH_SHORT).show();
                    break;
                default:
                    Toast.makeText(getApplicationContext(),R.string.server_errorUnknow, Toast.LENGTH_SHORT).show();
            
        


    
    @Override
    public void onFailure(Call<ResponseBody>call, Throwable t) 

        Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_LONG).show();
    
);

我还尝试了什么: android OAuth Retrofit Access Token Request

也尝试了其他类型,但都没有奏效。

谁能帮我解决这个问题?我想通过改造来实现这一点。

【问题讨论】:

你找到解决方案了吗? 请添加您的解决方案,我坚持使用 auth 1.0 api @SubinBabu 请查看我的回答here。我们不需要传递所有项目,改造自己处理所有。 github.com/rameshvoltella/WoocommerceAndroidOAuth1 这个可行 【参考方案1】:

使用这个库https://github.com/pakerfeldt/okhttp-signpost

public class ApiClient 
    public static Retrofit build() 
        //untuk oauth ver 1 methode
        OkHttpOAuthConsumer consumer = new OkHttpOAuthConsumer(Constant.CONSUMER_KEY, Constant.CONSUMER_SECRET);
        consumer.setTokenWithSecret("", "");

        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new SigningInterceptor(consumer))
                .build();

        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl(Constant.BASE_URL_WEATHER)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create());

        Retrofit retrofit = builder.build();
        return retrofit;
    

【讨论】:

以上是关于oAuth 1.0 获取请求改造 android的主要内容,如果未能解决你的问题,请参考以下文章

如何将生成的 Oauth 1.0 标头用于 GET 请求?

Twitter Oauth 1.0请求与驼峰路线

OAuth2.0四种授权模式

AndroidA——背景选择器selector用法汇总

无法使用 OAuth 1.0a 授权我,请求访问令牌时失败

使用新 oAuth 1.0 的 Google Ads API、C#、SOAP 请求?