2013-01-07 2 views
0

OAuth 서명에 약간의 문제가 있습니다. 나는 다음과 같은 오류가있어 retrieveRequestToken을받을 것으로 예상되는 지점에OAuth1a retrieveRequestToken throw null

:

01-05 17:26:02.775: W/System.err(24358): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: null 

나는이 얻을 이유를 모르겠어요. 어떤 제안이 있니?

는 내 코드 :

connectionDec = new ConnectionDetector(getApplicationContext()); 

// Check if Internet present 
if (!connectionDec.isConnectingToInternet()) 
{ 
// Internet Connection is not present 
// alert.showAlertDialog(MainActivity.this, 
// "Internet Connection Error", 
// "Please connect to working Internet connection", false); 
// stop executing code by return 
return; 
} 

CommonsHttpOAuthConsumer consumer = 
new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
CommonsHttpOAuthProvider provider = 
new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, 
AUTHORIZE_URL); 
provider.setOAuth10a(true); 

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
String token = sharedPreferences.getString("token", null); 
String tokenSecret = sharedPreferences.getString("token_secret", null); 

if (token == null || tokenSecret == null) 
{ 
Map requestHeaders = provider.getRequestHeaders(); 
requestHeaders.put("User-Agent", USER_AGENT); 
requestHeaders.put("Accept-Encoding", "gzip"); 

try 
{ 
String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
} 
catch (OAuthMessageSignerException e) 
{ 
e.printStackTrace(); 
} 
catch (OAuthNotAuthorizedException e) 
{ 
e.printStackTrace(); 
} 
catch (OAuthExpectationFailedException e) 
{ 
e.printStackTrace(); 
} 
catch (OAuthCommunicationException e) 
{ 
e.printStackTrace(); 
} 
} 
else 
{ 
} 

모든 계약 및 프로모션 추천 자료 비즈니스 디렉토리 리뷰와 도움이 ...

PS 감사합니다 : 그것은에 Discogs하고

이 미친

답변

0

확인을 접견 트위터되지는 내가 대답했다 자신의 질문 ... 나는 다음과 같은 asynctask를 구현하고 작동합니다 :

public class StartUpActivity extends Activity implements OnClickListener 
{ 

    private static String CONSUMER_KEY = "consumerkey"; 
    private static String CONSUMER_SECRET = "yourconsumersecret"; 
    private static String REQUEST_TOKEN_URL = "http://api.discogs.com/oauth/request_token"; 
    private static String AUTHORIZE_URL = "http://www.discogs.com/oauth/authorize"; 
    private static String ACCESS_TOKEN_URL = "http://api.discogs.com/oauth/access_token"; 
    private static String USER_AGENT = "youruseragent"; 
    private static String CALLBACK_URL = "http://www.callback.com"; 

    private ConnectionDetector connectionDec; 
    private SharedPreferences sharedPreferences; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.start_up_layout); 

     connectionDec = new ConnectionDetector(getApplicationContext()); 

     // Check if Internet present 
     if (!connectionDec.isConnectingToInternet()) 
     { 
      // Internet Connection is not present 
      // alert.showAlertDialog(MainActivity.this, 
      // "Internet Connection Error", 
      // "Please connect to working Internet connection", false); 
      // stop executing code by return 
      return; 
     } 

    } 

    class ProgressTask extends AsyncTask<Integer, Integer, Void>{ 

     @Override 
     protected void onPreExecute() { 
      // initialize the progress bar 
      // set maximum progress to 100. 
     } 

     @Override 
     protected void onCancelled() { 
      // stop the progress 
     } 

     @Override 
     protected Void doInBackground(Integer... params) { 
      // get the initial starting value 
      int start=params[0]; 
      // increment the progress 
       try { 
        CommonsHttpOAuthConsumer consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
        CommonsHttpOAuthProvider provider = 
          new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTHORIZE_URL); 
        provider.setOAuth10a(true); 

        // Check if token and tokensecret are already stored at app preferences 
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
        String token = sharedPreferences.getString("token", null); 
        String tokenSecret = sharedPreferences.getString("token_secret", null); 

        if (token == null || tokenSecret == null) 
        { 
         Map<String, String> requestHeaders = provider.getRequestHeaders(); 
         requestHeaders.put("User-Agent", USER_AGENT); 
         requestHeaders.put("Accept-Encoding", "gzip"); 

         try 
         { 
          String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
         } 
         catch (OAuthMessageSignerException e) 
         { 
          e.printStackTrace(); 
         } 
         catch (OAuthNotAuthorizedException e) 
         { 
          e.printStackTrace(); 
         } 
         catch (OAuthExpectationFailedException e) 
         { 
          e.printStackTrace(); 
         } 
         catch (OAuthCommunicationException e) 
         { 
          e.printStackTrace(); 
         } 
        } 
        else 
        { 

        } 

        } 

       catch (Exception e) { 
       } 

      return null; 
     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 
      // increment progress bar by progress value 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // async task finished 
     } 
    } 
} 
+0

당신이 어떻게 관리했는지에 대해 좀 더 자세하게 다룰 것입니다. – Viccari

+0

다른 사용자가 나중에 문제를 해결할 수 있도록 문제 해결에 사용한 샘플 코드를 추가하십시오. – Nope

+0

Ursaare 코드, 난 같은 문제가있어 –

관련 문제