1

Android での開発の経験はあまりありません。Facebook、Twitter、LinkedIn、Google+ と通信できるアプリを開発中です。

すべてのソーシャル ネットワークには、Android アプリとソーシャル ネットワーク間の通信を処理する独自のラッパーがあります。Facebookのコミュニケーションはすでに行われています。Twitterの通信に問題があります。私がインターネットで見つけた実装では、ロギングに twitter4j ライブラリとインターネット ブラウザを使用しています。次に、ブラウザから応答データを読み取る必要があります。

例: Twitter テストアプリ

私の問題は、ブラウザからこの応答データを読み取ることです。ブラウザでのロギングと認証は問題なく行われます。上記のようなチュートリアルでは、通常、ブラウザーの応答を処理するために onNewIntent() アクティビティ メソッドを使用します。しかし、この方法は別の目的に使用されるため、使用できません。MainActivity 以外のアクティビティなしでこれを行うことが可能かどうか、または Twitter 通信全体を処理するラッパーで別のアクティビティを作成する必要があるかどうかはわかりません。

助けてくれてありがとう。

4

1 に答える 1

2

インターネット上の twitter4j の非常に多くの例で、コールバック URL を処理するためにインテントとカスタム スキームが使用されている理由がよくわかりません。これは、ほとんどのシナリオで扱いにくいと思います。また、アプリケーションを離れてブラウザにログインするのも嫌いです。

代わりに、を使用しWebViewてページをロードしてみてください。WebViewClient次に、コールバック URL を検出できる を添付できます。マニフェストなどの変更に対処する必要もありません。onCreateViewおそらく a の中で、次のようなことをするかもしれませんDialogFragment:

mWebView = new WebView(context);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onLoadResource(WebView view, String url) {
        if (url.startsWith(CALLBACK_URL)) {
            Uri uri = Uri.parse(url);
            String denied = uri.getQueryParameter("denied");
            if (denied != null) {
                // handle denied
            } else {
                // handle authenticated
            }
        }
        super.onLoadResource(view, url);
    }
});

次に、認証 URL をロードできますonViewCreated(これを で実行している場合DialogFragment):

    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
    RequestToken reqToken = twitter.getOAuthRequestToken();
    mWebView.loadUrl(reqToken.getAuthenticationURL());
于 2013-03-19T22:34:31.080 に答える