2012-09-27 4 views
2

그래서 나는 이것을 (문자 그대로) 알아 내려고 노력했습니다. 그러나 나는 우연히 만났다. 지금하고 싶은 일은 액세스 토큰을 저장하여 나중에 사용할 수있게하고 사용자가 매번 앱을 "허용"할 필요가 없게하는 것입니다. 내가 저장하고 검색 한 "done.php"에서 액세스 토큰을 사용할 때 "GET"액션은 작동하지만 "POST"는 작동하지 않습니다.Tumblr API에 대한 PHP- 액세스 토큰 저장

include('functions.php'); 
require_once('tumblroauth/tumblroauth.php'); 
require_once('config.php'); 
session_start(); 
sec_session_start(); 
$tumblrblog = $_SESSION['tumblrblog']; 

$connection = new TumblrOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 

$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']); 

unset($_SESSION['oauth_token']); 
unset($_SESSION['oauth_token_secret']); 

if (200 == $connection->http_code) { 
$at = implode(",",$access_token); 

$insert_stmt = $mysqli->prepare("INSERT INTO tumblogs (tumblrblog, access_token) VALUES (?, ?)"); 
    $insert_stmt->bind_param('ss', $tumblrblog, $at); 
    $insert_stmt->execute(); 
print_r ($access_token); 

} else { 
    header('Location: ./clearsessions.php'); 
} 

완료

addblogs.php는 (이 스크립트는, 그들 ... 지금이 소금에 절인되지 않은 액세스 토큰에 저장을 방해한다, 바로 등록 후 실행,하지만 것입니다) .PHP는

include('functions.php'); 
session_start(); 
sec_session_start(); 
require_once('tumblroauth/tumblroauth.php'); 
require_once('config.php'); 
$tumblrblog = $_SESSION['tumblrblog']; 

$stmt = $mysqli->prepare('SELECT access_token FROM `tumblogs` WHERE tumblrblog=? LIMIT 1'); 
$stmt->bind_param("s", $tumblrblog); 
$stmt->execute(); 
$stmt->bind_result($at); 
$stmt->fetch(); 

$access_token = explode(",", $at); 

$connection = new TumblrOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['0'], $access_token['1']); 

print_r($access_token['0']); 

$hostname = "$tumblrblog.tumblr.com"; 
$connection = new TumblrOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['0'], $access_token['1']); 
$userinfo = $connection->get('http://api.tumblr.com/v2/user/info'); 
print_r($userinfo); 
$pic_path = "dir/$tumblrblog/good/icon.png"; 
$pic = file_get_contents($pic_path); 
$connection->post('api.tumblr.com/v2/blog/$hostname/post', array('type' => 'text', 'body' => 'this is a test of Tumbloadr v2')); 

이 봐 주셔서 모두 감사합니다 (Retreive 및 저장된 액세스 토큰을 사용합니다)!

브랜든 난 당신이 또한뿐만 아니라 $access_token[1]를 인쇄하여 올바른 액세스 토큰 비밀을 검색하고 있는지 확인 할 done.php에서

답변

2

. 또한 $ 연결 중 하나를 제거하면 두 번 할 필요가 없습니다. 좀 더 다이나믹하게하려면 $ 호스트 이름을이 주소를 사용하여 얻을 수 있습니다. $hostname = parse_url($blog->url,PHP_URL_HOST); 이것은 분명히 수정되지는 않았지만 잘하면 도움이 될 것입니다.

1

데이터베이스에 삽입하기 전에 accessToken을 직렬화하지 않는 이유는 무엇입니까? 데이터베이스에 토큰을 저장하는 올바른 방법이라고 생각합니다. 토큰에 ","문자가 포함되어 있는지 여부를 알 수 없으면 폭발로 인해 전체 액세스 토큰이 파괴됩니다.

Dropbox 용 토큰을 저장할 때 일련 번호를 사용하고이를 직렬화해야했습니다.

관련 문제