0

Twitter4j ライブラリを使用して、Twitter をアプリケーションに実装しています。をDialogFragment保持しWebView、ユーザーが自分のアプリで Twitter アカウントにサインインできるようにする があります。ユーザーはサインインできますが、コールバック URL が呼び出されることはありません。代わりに、ユーザーが既にサインインしている場合でも、サインイン ボタンを表示し続けますDialogFragment。ユーザーがログインした後、コールバック URL を呼び出すにはどうすればよいDialogFragmentですか?

Twitter 開発者サイトのコールバック URL のレイアウトは次のとおりです。

http://DOMAIN_NAME/SCHEME://HOST

そして、これがActivity私のマニフェストファイル内の私の宣言です:

    <activity
        android:name=".TwitterActivity"
        android:label="@string/app_name"
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <!-- Callback URL that Twitter will call which will direct us back into our app -->
            <data android:scheme=SCHEME android:host=HOST />    
        </intent-filter>
    </activity>

そして、Activityクラス内で、コールバック URL を保持する変数を宣言しています。

String callbackUrl = "SCHEME://HOST";

プレースホルダー DOMAIN_NAME、SCHEME、および HOST はすべて、適切な値に対応しています。

最後に、 my 内の login() メソッド内のコードActivity:

    mRequestToken = twitter.getOAuthRequestToken(callbackUrl);

    InternetDialog webDialog = new InternetDialog();
    webDialog.setUrl(mRequestToken.getAuthenticationURL());

    webDialog.show(getSupportFragmentManager(), "Twitter WebView");
4

1 に答える 1

1

ログイン後に取得する URL を確認し、コールバック URL と比較します。

 private class TwitterWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // what is the value of url
        if (url.startsWith(AppConstants.CALLBACK_URL)) {
            Uri uri = Uri.parse(url);
            String verifier = uri.getQueryParameter("oauth_verifier");
            mListener.onComplete(verifier,0);
            TwitterDialog.this.dismiss();

            return true;
        }
        return true;
    }
于 2013-06-15T05:52:12.933 に答える