인증 방식은 비슷하긴 하지만, access_token요청하는 부분 같은 게 없어서 callbackurl로 사용자api키를 받게 되는군요. 보안상 안좋을 것 같은...-_-
그리고, 언제까지 스프링노트에 표시를 할 것인지가 의문입니다.
트위터가 OpenAPI를 참 잘해놔서 그런지 굉장히 많은 서비스들이 튀어나오고 있습니다. 이점은 미투데이에서도 얼른 OpenAPI에 힘을 쓰시는 게...^^
api페이지입니다.
http://codian.springnote.com/pages/86001
요청절차는 이러합니다. 물론 여기가면 더 자세히 나와있습니다ㅠㅠ(웹인증기반 기준!)
http://codian.springnote.com/pages/1645274
1) api키를 발급받습니다.
2) 해당 api키로 인증 토큰을 얻습니다.
3) 그 토큰으로 인증url로 이동시킵니다.
4)사용자가 로그인 하면 지정한 callback페이지로 사용자키를 던져줍니다.
5) 사용자키로 글을 쓰면 됩니다.
1. 일단 API키 발급
http://me2day.net/me2/app/key/list
여기서 새 애플리케이션 키 발급한다음에 등록합니다. 그리고 등록된 키에서 설정을 누르면 웹기반인지 데스크탑기반인지 선택하는데, 웹기반이면 callback주소를 입력받습니다. 이 callback주소는 인증 후에 사용자키를 받는 url이 됩니다.
2. 해당api키로 인증토큰 얻기
config.php파일
[code]<?php
define('A_KEY', '발급받은 api키');
?>[/code]
index.php
[code]<?php
require_once("config.php");
$result = json_decode(file_get_contents("http://me2day.net/api/get_auth_url.json?akey=" . A_KEY));
print_r($result);
?>
<!doctype html>
<html>
<head>
<meta charset="EUC-KR">
<title>미투데이 인증 후 글쓰기</title>
</head>
<body>
<br />
<a href="<?php echo $result->url ?>">미투데이 인증하기</a>
</body>
</html>[/code]
php에서 http://me2day.net/api/get_auth_url.json를 요청해서 token을 받습니다. 그러면 인증url이 같이 떨어집니다. 그 url로 이동하게 되면 아래와같이 로그인하는 화면이 나옵니다.
여기서 로그인하고 인증하면 1번에서 지정한 callbackurl로 이동하게 됩니다.
3. callback url에서 데이터받고 글쓰기 폼생성
callback.php
[code]<?php
require_once("config.php");
$token = $_GET["token"];
$user_id = $_GET["user_id"];
$user_key = $_GET["user_key"];
$result = $_GET["result"];
// 세션저장
session_start();
$_SESSION["user_id"] = $user_id;
$_SESSION["user_key"] = $user_key;
// 인증이 확실한지 확인
$authKey = "12345678" . md5("12345678" . $user_key);
$result = file_get_contents("http://me2day.net/api/noop?uid={$user_id}&ukey={$authKey}&akey=" . A_KEY);
?>
<!doctype html>
<html>
<head>
<meta charset="EUC-KR">
<title>미투데이 인증 콜백</title>
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#btnPost").click(function(){
var body = $("#inputPost").val();
if (body.length < 1){
alert("글입력해요!");
return;
}
$.getJSON("post.php?callback=?", {body:body}, function(data){
alert("글쓰기 성공 = " + data.result);
});
});
});
</script>
</head>
<body>
<?php echo $result ?><br/>
<input type="text" id="inputPost" name="inputPost" /><br />
<input type="button" id="btnPost" name="btnPost" value="글쓰기"/>
</body>
</html>[/code]
보면 user_id랑 user_key를 세션에 저장합니다. 만약 자신의 사이트에서 미투데이인증과 통합을 원한다면 api키를 데이터베이스같은 영속적인 것에 저장하고 쓰는 것이 좋습니다. 그럼 따로 인증같은 것을 하지 않아도, 자신의 사이트만 인증을 해도 글을 쓸 수 있으니까요^^
나중에 api_key값이 바뀐다고 해도, noopapi를 호출해서 인증이 정확한지 확인 후 정확하지 않으면 다시 인증받으면 되니까요^^
user_id랑 user_key만 있으면 이제 글을 쓸 수 있으므로, http://me2day.net/api/noop를 호출해서 유효한지 확인을 합니다. 이제부터 인증받은 api들은 uid와 ukey와 akey를 같이 파라메터에 붙여서 호출해야합니다.
uid는 사용자 아이디, ukey는 임의8자리숫자 + md5(임의8자리숫자 + 사용자키), akey는 api키를 넣으면 됨!
4. 글쓰기
post.php
[code]<?php
require_once("config.php");
$body = $_GET["body"];
$callback = $_GET["callback"];
session_start();
$user_id = $_SESSION["user_id"];
$user_key = $_SESSION["user_key"];
// 인증이 확실한지 확인
$authKey = "12345678" . md5("12345678" . $user_key);
$result = file_get_contents("http://me2day.net/api/create_post/{$user_id}.json?uid={$user_id}&ukey={$authKey}&akey=" . A_KEY . "&post[body]={$body}");
header("Content-type: application/json");
echo "{$callback}({'result':'{$result}'})";
?>[/code]
그냥 api문서대로 호출하면 됨!
테스트 url~
mudchobo.tomeii.com/test/me2daytest/
나중에 php용 라이브러리를 만들어봐야겠다...