2014-09-11 11 views
5

Tôi đang sử dụng mẫu cho ứng dụng tại đây https://github.com/itog/Twitter4j-android-Sample và đang hoạt động. Tôi sử dụng phương pháp tương tự trong ứng dụng của tôi, nhưng nó trả về null khi tôi tại dòngTwitter Oauth Gọi lại getOAuthRequestToken null

static final String CALLBACK_URL = "oauth://t4jsample"; [Copy the same as the Sample] 
requestToken = twitter.getOAuthRequestToken(CALLBACK_URL); 

Dưới đây là biểu hiện

<activity 
     android:name="com.my.app.SharePreviewActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.Fullscreen" 
     android:windowSoftInputMode="stateAlwaysHidden|adjustPan" > 

     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data 
       android:host="t4jsample" 
       android:scheme="oauth" /> 
     </intent-filter> 
    </activity> 

Đây là mã khác của tôi mà tôi sao chép giống nhau từ các ứng dụng mẫu.

private void askOAuth() { 
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); 
    configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY); 
    configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET); 
    Configuration configuration = configurationBuilder.build(); 
    twitter = new TwitterFactory(configuration).getInstance(); 

    try { 
     requestToken = twitter.getOAuthRequestToken(CALLBACK_URL); 
     Toast.makeText(this, "Please authorize this app!", 
       Toast.LENGTH_LONG).show(); 
     this.startActivity(new Intent(Intent.ACTION_VIEW, Uri 
       .parse(requestToken.getAuthenticationURL()))); 
    } catch (TwitterException e) { 
     e.printStackTrace(); 
    } 
} 

Logcat:

09-17 16:37:40.528: W/System.err(21125): at twitter4j.HttpClientBase.request(HttpClientBase.java:53) 
09-17 16:37:40.528: W/System.err(21125): at twitter4j.HttpClientBase.post(HttpClientBase.java:82) 
09-17 16:37:40.529: W/System.err(21125): at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:107) 
09-17 16:37:40.530: W/System.err(21125): at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:92) 
09-17 16:37:40.531: W/System.err(21125): at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:263) 
09-17 16:37:40.532: W/System.err(21125): at com.PhotoPreviewActivity.askOAuth(PPActivity.java:320) 
09-17 16:37:40.532: W/System.err(21125): at com.my.onShareTwitter(com.my.java:298) 
09-17 16:37:40.533: W/System.err(21125): at java.lang.reflect.Method.invokeNative(Native Method) 
09-17 16:37:40.534: W/System.err(21125): at java.lang.reflect.Method.invoke(Method.java:511) 
09-17 16:37:40.535: W/System.err(21125): at android.view.View$1.onClick(View.java:3687) 
09-17 16:37:40.535: W/System.err(21125): at android.view.View.performClick(View.java:4299) 
09-17 16:37:40.536: W/System.err(21125): at android.view.View$PerformClick.run(View.java:17549) 
09-17 16:37:40.537: W/System.err(21125): at android.os.Handler.handleCallback(Handler.java:725) 
09-17 16:37:40.538: W/System.err(21125): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-17 16:37:40.539: W/System.err(21125): at android.os.Looper.loop(Looper.java:153) 
09-17 16:37:40.539: W/System.err(21125): at android.app.ActivityThread.main(ActivityThread.java:5322) 
09-17 16:37:40.540: W/System.err(21125): at java.lang.reflect.Method.invokeNative(Native Method) 
09-17 16:37:40.540: W/System.err(21125): at java.lang.reflect.Method.invoke(Method.java:511) 
09-17 16:37:40.541: W/System.err(21125): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:848) 
09-17 16:37:40.541: W/System.err(21125): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615) 
09-17 16:37:40.541: W/System.err(21125): at dalvik.system.NativeStart.main(Native Method) 
09-17 16:37:40.541: I/System.out(21125): [CDS] fix other exception in HttpUrlConnection 
09-17 16:37:40.543: W/System.err(21125): null 
09-17 16:37:40.543: W/System.err(21125): Relevant discussions can be found on the Internet at: 
09-17 16:37:40.543: W/System.err(21125): http://www.google.co.jp/search?q=8e063946 or 
09-17 16:37:40.543: W/System.err(21125): http://www.google.co.jp/search?q=c60cdc59 
09-17 16:37:40.544: W/System.err(21125): TwitterException{exceptionCode=[8e063946-c60cdc59 8e063946-c60cdc2f], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=4.0.2} 
+1

đi qua nó, từng bước http://blog.blundell-apps.com/sending-a-tweet/ – Blundell

Trả lời

5

Sau một cuộc đấu tranh thời gian lớn, tôi quản lý để thấy rằng tôi quên

  • đánh dấu các thư viện twitter jar (ngớ ngẩn tôi!)
  • gia tăng an ninh cho HTTP

Bạn cần phải đặt sdk tối thiểu có sẵn cho ứng dụng của bạn

if (android.os.Build.VERSION.SDK_INT > 8) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 

và sẽ hoạt động.

+0

Câu trả lời hay, cảm ơn sự giúp đỡ của bạn –

2

Nó tốt hơn để sử dụng SocialAuth cho android thay vì nếu bạn chỉ sẽ sử dụng một bên thứ 3 SDK cho sự phát triển vì nó cung cấp nhiều hơn nữa. Ngay bây giờ tôi nghĩ rằng vấn đề của bạn là nhận được một tài khoản twitter của nhà phát triển.

+0

Tôi có tài khoản twitter dành cho nhà phát triển. Tôi đang sử dụng twitter4j cho API là tốt. –

Các vấn đề liên quan