簡體   English   中英

示例 OAuth 1.0 在 java 中的實現

[英]example OAuth 1.0 implementation in java

我需要 java 中的一個示例,以便能夠使用 OAuth 1.0 來使用 API 來生成令牌:注意:我只有這些信息,即 ConsumerSecret。 我在互聯網上搜索過,但沒有找到可以幫助我的結果。

我正在尋找相同的內容,但實際上,我有一個我正在嘗試使用的 API 的管理員提供的示例。 由於沒有人回復此線程,我將在此處粘貼提到的示例,希望它可以在某種程度上有所幫助。 另外,如果有人可以幫我一把,了解代碼並解釋如何實現它,那就太好了。

package com.example.entities;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.filter.LoggingFilter;
import com.sun.jersey.oauth.client.OAuthClientFilter;
import com.sun.jersey.oauth.signature.HMAC_SHA1;
import com.sun.jersey.oauth.signature.OAuthParameters;
import com.sun.jersey.oauth.signature.OAuthSecrets;

public class SSRestServiceClient {

    /*
    * private constructor to avoid construction of object.
    */
    
    private SSRestServiceClient(String url, String consumerKey, String consumerSecret, int timeoutSeconds) {

        OAuthParameters params = new OAuthParameters().signatureMethod(HMAC_SHA1.NAME).consumerKey(consumerKey).version(OAUTH_VERSION);
        OAuthSecrets secrets = new OAuthSecrets().consumerSecret(consumerSecret);
        Client httpClient = Client.create();
        httpClient.setConnectTimeout(timeoutSeconds * 1000);
        httpClient.setReadTimeout(timeoutSeconds * 1000);
        OAuthClientFilter filter = new OAuthClientFilter(httpClient.getProviders(), params, secrets);
        httpClient.addFilter(filter);
        httpClient.addFilter(new LoggingFilter());
        this.consumerKey = consumerKey;
        this.webResource = httpClient.resource(url);
    }
    
    /*
    * Creates instance of the Client class, returns existing instance if it's already created.
    */
    
    public static synchronized SSRestServiceClient getInstance(String url, String consumerKey, String consumerSecret) {
    return getInstance(url, consumerKey, consumerSecret, 0);

    }   
    
      /*  
       * Creates instance of the Client class, returns existing instance if it's already created.
       */
    
    public static synchronized SSRestServiceClient getInstance(String url, String consumerKey,String consumerSecret, int timeoutSeconds) {
         if (client == null || client.getConsumerKey() == null || !client.getConsumerKey().equals(consumerKey)) {
             if (timeoutSeconds != 0 && timeoutSeconds < ONE_MINUTE) {
                 timeoutSeconds = ONE_MINUTE;
             }
             client = new SSRestServiceClient(url, consumerKey, consumerSecret, timeoutSeconds);
         }
         return client;
    }
    
    /*
     * Return a list of all active source cities.
     */
    
    @Override
    
    public CityList getAllSources() {
        return webResource.path(GET_ALL_SOURCES).get(CityList.class);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM