Domanda

Sto cercando di integrare twitter per la mia app, ma io non riesco a farlo funzionare.

Questo è il mio codice:

public class OAuthForTwitter extends Activity {

    private CommonsHttpOAuthConsumer httpOauthConsumer;
    private OAuthProvider httpOauthprovider;
    public final static String consumerKey = "{removed}";
    public final static String consumerSecret = "{removed}";
    private final String CALLBACKURL = "sosInternational:///HierBenIkNu";
    private Twitter twitter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        doOAuth();
    }

    /**
     * Opens the browser using signpost jar with application specific
     * consumerkey and consumerSecret.
     */

    private void doOAuth() {
        try {
            httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret);
            httpOauthprovider = new DefaultOAuthProvider(
                    "http://twitter.com/oauth/request_token",
                    "http://twitter.com/oauth/access_token",
                    "http://twitter.com/oauth/authorize");
            String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL);
            this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
        } catch (Exception e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {

        super.onNewIntent(intent);

        Uri uri = intent.getData();
        if (uri != null && uri.toString().startsWith(CALLBACKURL)) {

            String verifier = uri
                    .getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER);

            try {
                // this will populate token and token_secret in consumer

                httpOauthprovider.retrieveAccessToken(httpOauthConsumer,
                        verifier);

                // TODO: you might want to store token and token_secret in you
                // app settings!!!!!!!!

                AccessToken a = new AccessToken(httpOauthConsumer.getToken(),
                        httpOauthConsumer.getTokenSecret());

                // initialize Twitter4J

                twitter = new TwitterFactory().getInstance();
                twitter.setOAuthConsumer(consumerKey, consumerSecret);
                twitter.setOAuthAccessToken(a);

                // create a tweet

                Date d = new Date(System.currentTimeMillis());
                String tweet = "#OAuth working! " + d.toLocaleString();

                // send the tweet

                twitter.updateStatus(tweet);

            } catch (Exception e) {

                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            }

        }
    }
}

Quando sono autenticazione effettuata sul sito di Twitter, dovrebbe reindirizzare mi riporta al app.

Ma invece, ho questa Pagina non trovata:

alt text

Ho questo nel mio AndroidManifest:

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

Come posso tornare alla mia app con i tasti torno?

È stato utile?

Soluzione

Ok, era piuttosto un errore stupido.

Il mio <intent-filter> non era all'interno di un'applicazione ..

Questo è come è ora:

<activity 
        android:name=".OAuthForTwitter"
        android:label="@string/app_name"
        android:configChanges="orientation|keyboardHidden"
        android:launchMode="singleInstance">
        <intent-filter>  
            <action android:name="android.intent.action.VIEW"></action>  
            <category android:name="android.intent.category.DEFAULT"></category>  
            <category android:name="android.intent.category.BROWSABLE"></category>  
            <data android:scheme="sosInternational" android:host="OAuthForTwitter"></data>  
        </intent-filter>
    </activity>

Questo tipo off opere, semplicemente carica l'intera applicazione dall'inizio.

Non c'è un modo per appena 'tornare indietro' per l'ultima attività senza riavviare l'intero app?

Altri suggerimenti

Ho risolto questo. Non esattamente il modo in cui si è sviluppato, ma un lieve modo diverso. Questi sono i passi descrivendo quello che ho fatto.

  1. Usa visualizzazione web invece di aprirlo nel browser Web. Uno dei vantaggi chiave di farlo è, è possibile tenere traccia i reindirizzamenti url

  2. classe interna chiamata di metodo setWebViewClient del WebView e di override il metodo shouldOverrideUrlLoading della classe, ho usato.

  3. Si avrà parametro url nel metodo. Controllare se si parte con il proprio URL Torna chiamata o no,. (Nota: Questo URL contiene utente token e segreto utente che è necessaria per l'autorizzazione)

  4. Dopo aver terminato il vostro compito, è possibile nascondere l'attività o rimuovere la WebView o qualsiasi cosa che si desidera.

Modifica : Questo è il modo oAuth di solito usato in applicazioni web, quindi non abbiamo bisogno di modo XAuth. (Nel caso in cui gli altri membri della comunità non sanno)

La speranza che vi aiuterà.

L'URL di callback dovrebbe essere "sosInternational: // HierBenIkNu" (invece di "sosInternational: /// HierBenIkNu"). Nel codice Java

private final String CALLBACKURL = "sosInternational://HierBenIkNu";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top