Tweet senden

  • Antworten:2
Gonzo Gonzales
  • Forum-Beiträge: 12

14.08.2013, 13:31:27 via Website

Hallo,
Ich bin schon seit längerer Zeit stiller Mitleser. Allerdings habe ich nun ein kleines Problem bei meiner App und zwar soll sie vorerst nur Tweet senden. Hier gibt es jedoch ein Problem:
Das einloggen sollte soweit geklappt haben, wobei ich nichts senden kann. Ich poste mal den Quellcode.

1import android.app.Activity;
2import android.content.Intent;
3import android.content.SharedPreferences;
4import android.content.SharedPreferences.Editor;
5import android.net.Uri;
6import android.os.Bundle;
7import android.util.Log;
8import android.view.View;
9import android.webkit.WebView;
10import android.widget.Button;
11import android.widget.Toast;
12import twitter4j.Twitter;
13import twitter4j.TwitterException;
14import twitter4j.TwitterFactory;
15import twitter4j.auth.AccessToken;
16import twitter4j.auth.RequestToken;
17
18public class TweetToTwitterActivity extends Activity {
19
20 private static final String TAG = "Blundell.TweetToTwitterActivity";
21 private static final String PREF_ACCESS_TOKEN = "accessToken";
22 private static final String PREF_ACCESS_TOKEN_SECRET = "accessTokenSecret";
23 private static final String CONSUMER_KEY = "Key von Twitter erhalten";
24 private static final String CONSUMER_SECRET = "Secret von Twitter erhalten";
25 private static final String CALLBACK_URL = "abc";
26 private SharedPreferences mPrefs;
27 private Twitter mTwitter;
28 private RequestToken mReqToken;
29 private Button mLoginButton;
30 private Button mTweetButton;
31
32
33 @Override
34 public void onCreate(Bundle savedInstanceState) {
35 super.onCreate(savedInstanceState);
36 Log.i(TAG, "Loading TweetToTwitterActivity");
37 setContentView(R.layout.activity_main);
38
39 mPrefs = getSharedPreferences("twitterPrefs", MODE_PRIVATE);
40 Log.i(TAG, "Got Preferences");
41
42 mTwitter = new TwitterFactory().getInstance();
43 Log.i(TAG, "Got Twitter4j");
44
45 mTwitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
46 Log.i(TAG, "Inflated Twitter4j");
47
48 mLoginButton = (Button) findViewById(R.id.login_button);
49 mTweetButton = (Button) findViewById(R.id.tweet_button);
50 }
51
52 public void buttonLogin(View v) {
53 Log.i(TAG, "Login Pressed");
54 if (mPrefs.contains(PREF_ACCESS_TOKEN)) {
55 Log.i(TAG, "Repeat User");
56 loginAuthorisedUser();
57 } else {
58 Log.i(TAG, "New User");
59 loginNewUser();
60 }
61 }
62
63 public void buttonTweet(View v) {
64 Log.i(TAG, "Tweet Pressed");
65 tweetMessage();
66 }
67
68 private void loginNewUser() {
69 try {
70 Log.i(TAG, "Request App Authentication");
71 mReqToken = mTwitter.getOAuthRequestToken(CALLBACK_URL);
72
73 Log.i(TAG, "Starting Webview to login to twitter");
74 WebView twitterSite = new WebView(this);
75 twitterSite.loadUrl(mReqToken.getAuthenticationURL());
76 setContentView(twitterSite);
77
78 } catch (TwitterException e) {
79 Toast.makeText(this, "Twitter Login error, try again later", Toast.LENGTH_SHORT).show();
80 }
81 }
82
83 private void loginAuthorisedUser() {
84 String token = mPrefs.getString(PREF_ACCESS_TOKEN, null);
85 String secret = mPrefs.getString(PREF_ACCESS_TOKEN_SECRET, null);
86
87 AccessToken at = new AccessToken(token, secret);
88
89 mTwitter.setOAuthAccessToken(at);
90
91 Toast.makeText(this, "Welcome back", Toast.LENGTH_SHORT).show();
92
93 enableTweetButton();
94 }
95
96
97 @Override
98 protected void onNewIntent(Intent intent) {
99 super.onNewIntent(intent);
100 Log.i(TAG, "New Intent Arrived");
101 dealWithTwitterResponse(intent);
102 }
103
104 @Override
105 protected void onResume() {
106 super.onResume();
107 Log.i(TAG, "Arrived at onResume");
108 }
109
110 private void dealWithTwitterResponse(Intent intent) {
111 Uri uri = intent.getData();
112 if (uri != null && uri.toString().startsWith(CALLBACK_URL)) {
113 String oauthVerifier = uri.getQueryParameter("oauth_verifier");
114
115 authoriseNewUser(oauthVerifier);
116 }
117 }
118
119 private void authoriseNewUser(String oauthVerifier) {
120 try {
121 AccessToken at = mTwitter.getOAuthAccessToken(mReqToken, oauthVerifier);
122 mTwitter.setOAuthAccessToken(at);
123
124 saveAccessToken(at);
125
126 setContentView(R.layout.activity_main);
127
128 enableTweetButton();
129 } catch (TwitterException e) {
130 Toast.makeText(this, "Twitter auth error x01, try again later", Toast.LENGTH_SHORT).show();
131 }
132 }
133
134
135 private void enableTweetButton() {
136 Log.i(TAG, "User logged in - allowing to tweet");
137 mLoginButton.setEnabled(false);
138 mTweetButton.setEnabled(true);
139 }
140
141
142 private void tweetMessage() {
143 new Thread(){
144 public void run(){
145 try {
146 mTwitter.updateStatus("Tweet Android");
147 makeTweet("sending OK");
148 } catch (TwitterException e) {
149 makeTweet("ERROR");
150 }
151 }
152 }.start();
153 }
154
155 private void makeTweet(String message){
156 Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
157 }
158
159 private void saveAccessToken(AccessToken at) {
160 String token = at.getToken();
161 String secret = at.getTokenSecret();
162 Editor editor = mPrefs.edit();
163 editor.putString(PREF_ACCESS_TOKEN, token);
164 editor.putString(PREF_ACCESS_TOKEN_SECRET, secret);
165 editor.commit();
166 }
167}

Vielen Dank im Voraus

— geändert am 14.08.2013, 13:34:26

Antworten
Gonzo Gonzales
  • Forum-Beiträge: 12

02.09.2013, 17:06:06 via Website

Ich wollte mein Thema nur mal puschen

Antworten
Andy N.
  • Forum-Beiträge: 22.375

02.09.2013, 17:18:19 via App

... und genau sowas sehen wir bei uns nicht so gerne - Wenn jemand eine Antwort hat, wird er/sie sich schon hier melden <_<

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Antworten