0

我正在使用 Twitter4j 库在我的应用程序中实现 Twitter。我有一个DialogFragment,它拥有一个WebView并允许用户使用我的应用程序登录到他们的 Twitter 帐户。它允许用户登录,但永远不会调用回调 URL。相反,DialogFragment即使用户已经登录,它也会继续显示登录按钮。如何从DialogFragment用户登录后调用回调 URL?

这是我在 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 都对应于它们相应的值。

最后,我的 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 回答