今更ながら言語処理100本ノック始めました。
言語は最近手を付け始めたKotlinちゃんです。
なんだか綺麗じゃないコード…。
ネット上や、実生活で気になったことをつらつら書き連ねていきますよ
タイトルの通りSlim3上でTwitter4Jを使いTwitter認証を通す方法です。
基本はsinmetalさんのブログ記事と似ていますが、そのままではなぜか動かなかったため微修正。
public class AuthController extends Controller { | |
@Override | |
public Navigation run() throws Exception { | |
// コンシューマーキー、コンシューマーシークレットを設定 | |
// twitter4j.propertiesを使用する方法わからず… | |
final String consumerKey = CONSUMER_KEY; | |
final String consumerSecret = CONSUMER_SECRET; | |
// Twitterインスタンス生成 | |
ConfigurationBuilder cb = new ConfigurationBuilder(); | |
cb.setOAuthConsumerKey(consumerKey).setOAuthConsumerSecret(consumerSecret) | |
.setOAuthAccessToken(null).setOAuthAccessTokenSecret(null); | |
TwitterFactory tf = new TwitterFactory(cb.build()); | |
Twitter twitter = tf.getInstance(); | |
// コールバック用に保持 | |
sessionScope("twitter", twitter); | |
// コールバックURL取得 | |
StringBuffer callbackUrl = request.getRequestURL(); | |
int index = callbackUrl.lastIndexOf("/"); | |
callbackUrl.replace(index, callbackUrl.length(), "").append("/callback"); | |
try { | |
// リクエストトークン発行 | |
RequestToken requestToken = twitter.getOAuthRequestToken(callbackUrl.toString()); | |
// コールバック用に保持 | |
sessionScope("requestToken", requestToken); | |
// 認証URLへリダイレクト | |
// Controller.redirect()を使用するとリダイレクトループが発生する模様 | |
response.sendRedirect(requestToken.getAuthenticationURL()); | |
return null; | |
} catch (TwitterException e) { | |
throw new ServletException(e); | |
} | |
} | |
} |
public class CallbackController extends Controller { | |
@Override | |
public Navigation run() throws Exception { | |
Twitter twitter = (Twitter) sessionScope("twitter"); | |
RequestToken requestToken = (RequestToken) sessionScope("requestToken"); | |
String verifier = asString("oauth_verifier"); | |
try { | |
twitter.getOAuthAccessToken(requestToken, verifier); | |
removeSessionScope("requestToken"); | |
} catch (TwitterException e) { | |
e.printStackTrace(); | |
} | |
return null; | |
} | |
} |
$ tar zxvf breach-v0.3.20-alpha.5-linux-x64.tar.gz
$ mv breach-v0.3.20-alpha.5-linux-x64 breach
$ cd breach
$ ./breach
[18856:18856:0713/004640:11583496358:FATAL:browser_main_loop.cc(172)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
./breach: 6 行: 18856 中止 (コアダンプ) $SRC_DIR/__AUTO_UPDATE_BUNDLE__/exo_browser/exo_browser --raw $SRC_DIR/__AUTO_UPDATE_BUNDLE__/breach_core
怒られた。 $ unzip chrome-linux.zip
$ cd chrome-linux
$ sudo cp ./chrome_sandbox /usr/local/sbin/chrome-devel-sandbox
$ sudo chown root:root /usr/local/sbin/chrome-devel-sandbox
$ sudo chmod 4755 /usr/local/sbin/chrome-devel-sandbox
改めて起動。$ ./breach
[2014-07-12T15:56:50.983Z] [index] Breach v0.3.20-alpha.5 Starting...
:
:
お、起動したっぽい。mod_strip
追加するね。 github:breach/mod_strip
追加中。breach/mod_stats
を消せばいいよ。web: bundle exec rails server -p $PORT