OAuth를 사용하여 권한을 부여 받았지만 문제가있는 Twitter API와 연결된 상태를 유지하려고합니다.Twitter API - 세션에 OAuth 토큰 저장
세션이나 데이터베이스에서 저장된 Oauth 토큰을 사용하여 Twitter API에 연결하려고하면 "Invalid/expired Token"
이됩니다.
이 방법이 있습니까? 나는 매번 트위터를 통해 로그인해야하는 내 앱 사용자를 원하지 않는다. 분명히 한 번 내 앱을 승인 한 후에는 충분할 것입니다.
$consumer_key = 'consumerkey';
$consumer_secret = 'consumersecret';
$twitterObj = new EpiTwitter($consumer_key, $consumer_secret);
if (isset($_GET['oauth_token'])){
$oauth_token = $_GET['oauth_token'];
} else if ($_SESSION['oauth_token']){
$oauth_token = $_SESSION['oauth_token'];
echo $_SESSION['oauth_token'];
} else {
//see if authorisation already set up in DB
$query = mysql_query("SELECT oauth_token FROM PingSocialMediaUsers WHERE oauth_provider = 'twitter' AND clientID = '$clientID'");
$result = mysql_fetch_row($query);
$oauth_token = $result[0];
}
if($oauth_token == ''){
$url = $twitterObj->getAuthorizationUrl();
$twitter_login = $url;
} else {
$twitterObj->setToken($oauth_token);
$token = $twitterObj->getAccessToken();
$twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
$_SESSION['oauth_token'] = $token->oauth_token;
$_SESSION['oauth_secret'] = $token->oauth_token_secret;
$twitterInfo= $twitterObj->get_accountVerify_credentials();
$twitterInfo->response;
echo $twitterInfo->response['error'];
//echo '<pre>';
//print_r($twitterInfo);
$id = $twitterInfo->id;
$username = $twitterInfo->screen_name;
//add to details database
//find the user by ID
if ($id != ''){
$query = mysql_query("SELECT * FROM PingSocialMediaUsers WHERE oauth_provider = 'twitter' AND oauth_uid = '$id'");
$result = mysql_fetch_array($query);
// If does not exist add to database
if(empty($result)){
$query = mysql_query("INSERT INTO PingSocialMediaUsers (oauth_provider, oauth_uid, username, oauth_token, oauth_secret) VALUES ('twitter', {$id}, '{$username}', '{$_SESSION['oauth_token']}', '{$_SESSION['oauth_secret']}')");
$query = mysql_query("SELECT * FROM PingSocialMediaUsers WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
} else {
//update the tokens
$query = mysql_query("UPDATE PingSocialMediaUsers SET oauth_token = '{$_SESSION['oauth_token']}', oauth_secret = '{$_SESSION['oauth_secret']}' WHERE oauth_provider = 'twitter' AND oauth_uid = {$id}");
}
$_SESSION['id'] = $result['id'];
$_SESSION['username'] = $result['username'];
$_SESSION['oauth_uid'] = $result['oauth_uid'];
$_SESSION['oauth_provider'] = $result['oauth_provider'];
$_SESSION['oauth_token'] = $result['oauth_token'];
$_SESSION['oauth_secret'] = $result['oauth_secret'];
}
$twitterAuth = TRUE;
}
귀하의 액세스 토큰에서 유효한 access_token은을 받고 있는지 확인하는 것이 좋습니다이 API 페이지 그래서 Twitter OAuth FAQ
에 대한 참조입니다 최종 사용자 자신이 취소 할 때까지 유효해야합니다. 어떻게 보관합니까? 물론 그들은 트위터에서받은 것과 동일합니다, 당신은 올바른 토큰 비밀을 가지고 있습니까? –
세션과 데이터베이스 모두에 저장하려고했지만 어느 쪽이든 오류가 발생합니다. 유일한 방법은 트위터를 사용하여 autorise하고 따라서 $ _GET 메서드를 사용하여 콜백 URL에서 autorisation 키를 얻는 것입니다. 위의 코드를 보여 줬습니다. – LeeTee