勉強会概要
- ビズリーチさんの 初心者大歓迎! webアプリを作ってみよう! に参加
- spring-bootで表題のそれを作る
- できた結果がこちら(CSS周りはあとで!)
前提
- Windows8.1
- Eclipse
- githubの場所はこちら
- 理解不足な点多々あり.勉強して今後追記して参ります!
まずはじめに
- gitのビューを開いてクローン
- URIの複製から上記URIにアクセス
- プロジェクトを握って一旦ソース系確認
TestAppを動かす
- SampleApplication.javaを開いてコンテキストメニュー→実行
(Javaアプリケーションで実行) わりと下の方にあります - 一旦ローカルホストで確認(localhost:8080)
- 画面は"hello,world"だけ表示されてるはずです
画面っぽい何かを見てみる
- localhost:8080の後ろに "/sample"でhtmlファイルを閲覧
- フォームにinputすると画面に反映されます
なんでか?
- timeleafを入れてタグにthをほうり込むと文字列が置き換わる
- ${name}はcontroller側でmodel.attribute()としてnameの値をほうり込んでいく
- modelはtimeleafに渡す値をマッピングしてる
- ハンドラはspringboot側でよしなに
twitterAPIへ
- twiiterAPIへアクセス
- キーコピペしてtwitter4jpropatiesにいれる
認証系
- 新しくクラスを定義.こんな感じ.
TwitterAuthController.java
package jp.co.bizreach.spring_boot_sample;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import twitter4j.TwitterException;
import twitter4j.auth.AccessToken;
import twitter4j.auth.OAuthAuthorization;
import twitter4j.auth.RequestToken;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationContext;
@Controller
@RequestMapping("")
public class TwitterAuthController {
@Autowired
private HttpSession session;
@Autowired
private HttpServletRequest request;
@RequestMapping("requestToken")
public String requestToken(Model model) throws TwitterException{
Configuration conf = ConfigurationContext.getInstance();
OAuthAuthorization oauth = new OAuthAuthorization(conf);
String callbackURL = "http://localhost:8080/accessToken";
RequestToken requestToken = oauth.getOAuthRequestToken(callbackURL);
session.setAttribute("requestToken", requestToken);
return "redirect:" + requestToken.getAuthenticationURL();
}
@RequestMapping("accessToken")
public String accessToken(Model model) throws TwitterException{
Configuration conf = ConfigurationContext.getInstance();
RequestToken requestToken = (RequestToken)session.getAttribute("requestToken");
AccessToken accessToken = new AccessToken(requestToken.getToken(),requestToken.getTokenSecret());
OAuthAuthorization oauth = new OAuthAuthorization(conf);
oauth.setOAuthAccessToken(accessToken);
String verifier = request.getParameter("oauth_verifier");
accessToken = oauth.getOAuthAccessToken(verifier);
session.setAttribute("accessToken", accessToken);
return "redirect:mypage";
}
}
\ 2. TwitterCntroller.javaの最終行に以下も追加定義
TwitterCntroller.java
private Twitter createTwitter(){
AccessToken accessToken = (AccessToken)session.getAttribute("accessToken");
TwitterFactory factory = new TwitterFactory();
return factory.getInstance(accessToken);
}
}
\3. これで実行してブラウザで http://localhost:8080/requestToken にアクセスすると認証画面を追加して上記のスクリーンショットみたいな画面に遷移する(はず)