Twitterの認証が出来ません

706 views
Skip to first unread message

Stone

unread,
Apr 17, 2012, 4:53:03 AM4/17/12
to Twitter4J J
Stoneと申します。 東京の調布在住です。 よろしく。


アンドロイドでTwitterを組み込んだアプリを作っているのですが、認証のところでうまくいきません。

以下のようなコードにしたんですが、
認証サイトのページには行くのですが、IDとパスワードを入れて「連携アプリを認証」ボタンを押しても
「アプリケーションに戻ります、しばらくお待ち下さい」という画面が出て元の認証ページに戻ります。
「キャンセルしてアプリに戻る」を押しても反応なし。
バックキーで戻ろうとすると
「表示しようとしているページには既に送信されたデータが含まれています「POSTDAT
A」…
となって全然元のアプリの画面に戻れなくなります。


使用してるのはtwitter4j-core-android-2.2.5 、Android 2.1
一体どこが悪いのでしょうか?
よろしくお願いします。


public class DoTwitterActivity extends Activity{

final String CONSUMER_KEY = "myKEY";
final String CONSUMER_SECRET = "mySecretCode";
private static final String CALLBACK_URL = "foo://bar";
final String OAUTH_VERIFIER = "oauth_verifier";

private Twitter mTwitter;
private RequestToken mRequestToken;

private OAuthAuthorization oauth;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

WebView webview = new WebView(this);
setContentView(webview);

twitter4j.conf.Configuration config = new
ConfigurationBuilder().build();
oauth = new OAuthAuthorization(config);
oauth.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
oauth.setOAuthAccessToken(null);
try {
String url =
oauth.getOAuthRequestToken(CALLBACK_URL).getAuthenticationURL();
webview.loadUrl(url);
} catch (TwitterException e) {
Toast.makeText(this, "failed", Toast.LENGTH_LONG).show();
finish();
}
}


@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();


ここに来ない .........


}
}

}

Manifest

<activity android:name=".DoTwitterActivity"
launchMode="singleTask">

<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="foo" android:host="bar"/>
</intent-filter>

</activity>

Mocel

unread,
Apr 19, 2012, 6:57:53 AM4/19/12
to twitt...@googlegroups.com
こんにちは。

このソースのままだと、


String url = oauth.getOAuthRequestToken(CALLBACK_URL).getAuthenticationURL();

で得られる URL が https でなく http になると思いますが、どうですか?
この URL が http だとおそらく https のほうにリダイレクトされるので、WebView がこのままだとリダイレクト先を標準ブラウザで開いてしまうのでアプリの認証画面は WebView でなく標準ブラウザで表示されていると思います。
BACK ボタンで戻るとエラーメッセージが表示されるのも、標準ブラウザの挙動だと思います。WebView は標準だと BACK キーに反応しません。

こちらで試してみたところ、アプリの認証画面は標準ブラウザで表示されていましたがそのあとのコールバック URL は正しく処理されており、onNewIntent() で oauth_verifier を受け取れていました。が、onCreate() は通っていないので Activity が表示されることもなく画面には標準ブラウザが残ったままになっていました。

Android 方面のグループから紹介されてこちらに来られたようですが、このようにほとんどが Android の挙動が原因となっているようですので、これ以上詳しいことは Android 方面のグループでお尋ねいただければと思います。

ではでは。

-Mocel

Stone

unread,
Apr 22, 2012, 12:02:31 AM4/22/12
to Twitter4J J
Stone@調布です

返信遅れました。結局Twitter必用なしということになったのであきらめちゃいました。
教えていただいたとおりやってみます。
ありがとうございます。
Reply all
Reply to author
Forward
0 new messages