OAuth + Twitter auf Android: der Rückruf fehlschlägt

Meinem Android-Anwendung verwendet Java OAuth-Bibliothek, gefunden hier für die Autorisierung auf Twitter. Ich bin in der Lage, eine Anfrage-token, autorisieren Sie den token erhalten und bekommen ein acknowlegement aber, wenn der browser versucht die call-back url, um wieder mit meiner Anwendung, ist es nicht die URL, die ich im code verwendet wird, sondern der, den ich geliefert, während die Registrierung bei Twitter.

Beachten:

1. Bei der Registrierung meine Anwendung mit twitter, habe ich eine hypothetische call-back-url:http://abz.xyc.com und legen Sie den Typ der Anwendung, die als browser.

2. Habe ich eine callback-url in meinem code "myapp" und haben einen zusätzlichen Vorsatz-filter für meine Tätigkeit mit Browsable Kategorie und Daten-Schema als "myapp".

3. URL die aufgerufen wird, wenn der Autorisierung enthält te callback-url, die ich angegeben im code.

Irgendeine Idee was mache ich hier falsch?

Relevante Code:

public class FirstActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        OAuthAccessor client = defaultClient();
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(client.consumer.serviceProvider.userAuthorizationURL + "?oauth_token="
                + client.requestToken + "&oauth_callback=" + client.consumer.callbackURL));

        startActivity(i);

    }

    OAuthServiceProvider defaultProvider()
    {
        return new OAuthServiceProvider(GeneralRuntimeConstants.request_token_URL,
                GeneralRuntimeConstants.authorize_url, GeneralRuntimeConstants.access_token_url);
    }

    OAuthAccessor defaultClient()
    {
        String callbackUrl = "myapp:///";
        OAuthServiceProvider provider = defaultProvider();
        OAuthConsumer consumer = new OAuthConsumer(callbackUrl,
                GeneralRuntimeConstants.consumer_key, GeneralRuntimeConstants.consumer_secret,
                provider);
        OAuthAccessor accessor = new OAuthAccessor(consumer);

        OAuthClient client = new OAuthClient(new HttpClient4());
        try
        {
            client.getRequestToken(accessor);
        } catch (Exception e)
        {
            e.printStackTrace();
        }

        return accessor;
    }

    @Override
    protected void onResume()
    {
        //TODO Auto-generated method stub
        super.onResume();

        Uri uri = this.getIntent().getData();
        if (uri != null)
        {
            String access_token = uri.getQueryParameter("oauth_token");
        }
    }

}
//Manifest file
 <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FirstActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
             <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:scheme="myapp"/>
            </intent-filter>
        </activity>
 </application>
InformationsquelleAutor Samuh | 2010-02-04
Schreibe einen Kommentar