twitter4j PINコードの自動取得

910 views
Skip to first unread message

gkato

unread,
Aug 30, 2011, 4:48:44 AM8/30/11
to 日本Androidの会
初めて投稿します。gkatoと申します。
現在twitterAPIを使用したAndroidアプリを開発中です。
twitterAPIの使用にはtwitter4jを利用させて頂いております。

質問なのですが、リクエストトークンの取得後、
PINコードをApp内に取り込む方法はありませんでしょうか?
できれば、ユーザにPINコードを入力させる手間を省きたいのです。

iPhoneアプリでは実現している方がいます↓
http://d.hatena.ne.jp/nakamura001/20100519/1274287901

考えられる方法としては
①アプリ内部にWebViewを持つ
②HTMLを取得してパース

なのですが、Androidアプリ開発の経験が浅く、これが可能かどうかの判断かつきません。
もし分かる方がいましたら、教えて頂けるとうれしいです。

よろしくお願いします。

Nkzn

unread,
Aug 30, 2011, 5:20:22 AM8/30/11
to android-g...@googlegroups.com
gkatoさん

なかざんです。

ご希望の動作を実現しているソースを見たことがあります。
ですがNDAが絡むので残念ながら実例を上げることができません。

「android javascript 連携」あたりでググるとそれっぽい情報が
出てきますので、探してみてください。

ご参考までに。

--Yukiya Nakagawa

Koji Ohno

unread,
Aug 30, 2011, 5:29:22 PM8/30/11
to android-g...@googlegroups.com
gkatoさん

こんにちは、大野と申します。

可能だと思います。

以前まさに
> ①アプリ内部にWebViewを持つ
> ②HTMLを取得してパース
の方法で作成しました。

WebView の addJavascriptInterface で javascript のインターフェイスを埋め込み

onPageFinished イベントの中で WebView の loadUrl メソッドでjavascriptを呼び出し
こんな感じ → webView.loadUrl("javascript:container.setString(document.getElementById('oauth_pin').innerHTML);");

javascript インターフェイスの setString メソッドで accessToken を取得

で動いたと思います。

注意点は、PINが表示されているページのHTMLの書き方を変えられると
動かなくなる可能性があることです。

2011年8月30日17:48 gkato <maou...@hotmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

Nkzn

unread,
Aug 30, 2011, 9:25:42 PM8/30/11
to android-g...@googlegroups.com
なかざんです。

> 注意点は、PINが表示されているページのHTMLの書き方を変えられると
> 動かなくなる可能性があることです。

これ、実際に遭遇したことがあります。
たぶん2010年の1月か2月だったと記憶しているのですが、
PINコードが書いてある部分のHTMLタグのIDが

旧:oauth-pin
新:oauth_pin

というふうに紛らわしく変更されてPINコードの取得がアプリ側からできなくなり、
しばらく悩む羽目になりました。

以上、ご参考までに。

--Yukiya Nakagawa

2011年8月31日水曜日6時29分22秒 UTC+9 Koji Ohno:

gkato

unread,
Aug 30, 2011, 11:02:06 PM8/30/11
to 日本Androidの会
大野様

ご回答ありがとうございます。
教えて頂いた方法を試してみます。


On 8月31日, 午前6:29, Koji Ohno <s936...@gmail.com> wrote:
> gkatoさん
>
> こんにちは、大野と申します。
>
> 可能だと思います。
>
> 以前まさに> ①アプリ内部にWebViewを持つ
> > ②HTMLを取得してパース
>
> の方法で作成しました。
>
> WebView の addJavascriptInterface で javascript のインターフェイスを埋め込み
>
> onPageFinished イベントの中で WebView の loadUrl メソッドでjavascriptを呼び出し
> こんな感じ → webView.loadUrl("javascript:container.setString(document.getElementById('oa uth_pin').innerHTML);");
>
> javascript インターフェイスの setString メソッドで accessToken を取得
>
> で動いたと思います。
>
> 注意点は、PINが表示されているページのHTMLの書き方を変えられると
> 動かなくなる可能性があることです。
>
> 2011年8月30日17:48 gkato <maou_...@hotmail.com>:

gkato

unread,
Aug 30, 2011, 11:03:31 PM8/30/11
to 日本Androidの会
なかざん様

ご回答ありがとうございます。
ご指摘の問題は、iPhone版の実装でも起こりうると思います。
注意が必要ですね・・・

On 8月31日, 午前10:25, Nkzn <yn.airsc...@gmail.com> wrote:
> なかざんです。
>
> > 注意点は、PINが表示されているページのHTMLの書き方を変えられると
> > 動かなくなる可能性があることです。
>
> これ、実際に遭遇したことがあります。
> たぶん2010年の1月か2月だったと記憶しているのですが、
> PINコードが書いてある部分のHTMLタグのIDが
>
> 旧:oauth-pin
> 新:oauth_pin
>
> というふうに紛らわしく変更されてPINコードの取得がアプリ側からできなくなり、
> しばらく悩む羽目になりました。
>
> 以上、ご参考までに。
>
> --Yukiya Nakagawa
>
> 2011年8月31日水曜日6時29分22秒 UTC+9 Koji Ohno:
>
>
>
>
>
>
>
>
>
> > gkatoさん
>
> > こんにちは、大野と申します。
>
> > 可能だと思います。
>
> > 以前まさに
> > > アプリ内部にWebViewを持つ
> > > HTMLを取得してパース
> > の方法で作成しました。
>
> > WebView の addJavascriptInterface で javascript のインターフェイスを埋め込み
>
> > onPageFinished イベントの中で WebView の loadUrl メソッドでjavascriptを呼び出し
> > こんな感じ →
> > webView.loadUrl("javascript:container.setString(document.getElementById('oa uth_pin').innerHTML);");

Masaki Inagaki

unread,
Sep 4, 2011, 2:45:38 AM9/4/11
to 日本Androidの会
gkatoさん

イナガキと申します。

もう解決済みかもしれませんが、自分が行った方法は、以下のような感じです。

1.Twittterアプリケーション登録の際にCallback URLを設定する(このURLは実在する空白のHTMLを設置。ページが存在しない
場合どうなるかは未検証)。
2.Androidアプリから、twitterの認証URLに普通にアクセスする。
3.ユーザーが認証を行うと、URLパラメータに、oauth_tokenとoauth_verifierが付いてCallback URLにリダイレ
クトされる。
4.WebViewClientのonPageFinishedイベントが発生するので、URLパラメータからoauth_tokenと
oauth_verifierをパースし、
  AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,
oauthVerifier);
  で、アクセストークンが取得できる。

Callback URLを設置するWebが必要になりますが、javascript使ったり、HTML解析したりする必要がないので、シンプルに構築
できるかと思います。
PINを使用せずにユーザー認証を完結させる方法ですので、目的がPIN取得でしたら見当違いの回答ですみません。
Reply all
Reply to author
Forward
0 new messages