【PHP】신 TwitterOAuth로 로그인 기능을 구현한다
15956 단어 트위터PHPOAuthTwitterOAuth
의외로 간단할 수 있습니다.
TwitterOAuth 다운로드
먼저 TwitterOAuth 웹 페이지에서 TwitterOAuth를 다운로드합니다. Composer의 설치 방법이 기본적으로 표시되지만 Mannual install 버튼을 클릭하면 TwitterOAuth를 다운로드하는 방법이 표시됩니다.
API 키 발급
API 키의 취득 방법에 대해서는 할애.
디렉토리 구성은 이런 느낌
API 키의 취득 방법에 대해서는 할애.
디렉토리 구성은 이런 느낌
h tp // w w. 그래 mpぇ. 코m/
twitteroauth (위의 URL에서 다운로드 한 파일 세트)
Twitter API를 Fucking하는 데 필요한 값 정의
<?php
//common.php
define( 'CONSUMER_KEY', 'Twitterのコンシュマーキー(APIキー)' );
define( 'CONSUMER_SECRET', 'Twitterのコンシュマーシークレット(APIシークレット)' );
define( 'OAUTH_CALLBACK', 'http://www.example.com/callback.php' );
login.php 만들기
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
//コールバックURLをここでセット
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
//callback.phpで使うのでセッションに入れる
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
//Twitter.com 上の認証画面のURLを取得( この行についてはコメント欄も参照 )
$url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));
//Twitter.com の認証画面へリダイレクト
header( 'location: '. $url );
callback.php 만들기
Twitter 인증 화면에서 여기로 리디렉션됩니다. 이 작업이 끝나면 mypage.php
로 리디렉션됩니다.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//login.phpでセットしたセッション
$request_token = []; // [] は array() の短縮記法。詳しくは以下の「追々記」参照
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
//Twitterから返されたOAuthトークンと、あらかじめlogin.phpで入れておいたセッション上のものと一致するかをチェック
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
die( 'Error!' );
}
//OAuth トークンも用いて TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
//アプリでは、access_token(配列になっています)をうまく使って、Twitter上のアカウントを操作していきます
$_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
/*
ちなみに、この変数の中に、OAuthトークンとトークンシークレットが配列となって入っています。
*/
//セッションIDをリジェネレート
session_regenerate_id();
//マイページへリダイレクト
header( 'location: /mypage.php' );
추가 (2015/03/26)
11행째가 $request_token = []
로 되어 있었습니다만, 움직이지 않는 경우가 있다, 라고 하는 것으로 조사해 보았더니, 이 단축기법은, PHP 5.4 이후로 사용할 수 있다, 라고 하는 것이었습니다. ( htp //php. 네 t/마누아 l/쟈/펑구게. type s. 어쩌면 y. php )
추가 (2015/03/27)
PHP 5.4부터 array()
의 단축기법인 []
를 사용할 수 있습니다.
//以下の2行は、どちらも同じことをしている。
$hoge = array();
$hoge = [];
즉, PHP 5.3 또는 그 이전을 사용하고 있는 경우, []
(은)는 사용할 수 없다고 하는 것입니다만, PHP 5.3 (은)는 벌써 서포트가 끊어지고 있기 때문에, 최대한 버전 업 해, 모두.[]
(을)를 사용합시다! 라는 것입니다. (자세한 내용은 코멘트 열 참조)
@le_panda_noir 씨, @mpyw 씨, 고마워요!
mypage.php 만들기
이제 사용자 정보를 표시합니다.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//セッションに入れておいたさっきの配列
$access_token = $_SESSION['access_token'];
//OAuthトークンとシークレットも使って TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
//ユーザー情報をGET
$user = $connection->get("account/verify_credentials");
//(ここらへんは、Twitter の API ドキュメントをうまく使ってください)
//GETしたユーザー情報をvar_dump
var_dump( $user );
이렇게 하면 $user
에 사용자 정보가 개체로 저장됩니다.
실행 결과의 예:
object(stdClass)[7]
public 'id' => int 1224353684
public 'id_str' => string '1224353684' (length=10)
public 'name' => string 'SofPyon' (length=38)
public 'screen_name' => string 'sofpyon' (length=7)
public 'location' => string 'Japan' (length=5)
public 'profile_location' => null
(以下、まだまだ続くので省略)
그리고는, 사용자 정보를 표시하고 싶은 장소에, 이하와 같이 출력하면 OK(만약을 위해 htmlspecialchars()
あなたの名前:
<?php echo $user->name; ?>
Twitter API 문서는 여기
(참고) $_SESSION['access_token'] 정보(2015-05-04 추가)
배열.
<?php
//common.php
define( 'CONSUMER_KEY', 'Twitterのコンシュマーキー(APIキー)' );
define( 'CONSUMER_SECRET', 'Twitterのコンシュマーシークレット(APIシークレット)' );
define( 'OAUTH_CALLBACK', 'http://www.example.com/callback.php' );
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
//コールバックURLをここでセット
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
//callback.phpで使うのでセッションに入れる
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
//Twitter.com 上の認証画面のURLを取得( この行についてはコメント欄も参照 )
$url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));
//Twitter.com の認証画面へリダイレクト
header( 'location: '. $url );
callback.php 만들기
Twitter 인증 화면에서 여기로 리디렉션됩니다. 이 작업이 끝나면 mypage.php
로 리디렉션됩니다.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//login.phpでセットしたセッション
$request_token = []; // [] は array() の短縮記法。詳しくは以下の「追々記」参照
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
//Twitterから返されたOAuthトークンと、あらかじめlogin.phpで入れておいたセッション上のものと一致するかをチェック
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
die( 'Error!' );
}
//OAuth トークンも用いて TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
//アプリでは、access_token(配列になっています)をうまく使って、Twitter上のアカウントを操作していきます
$_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
/*
ちなみに、この変数の中に、OAuthトークンとトークンシークレットが配列となって入っています。
*/
//セッションIDをリジェネレート
session_regenerate_id();
//マイページへリダイレクト
header( 'location: /mypage.php' );
추가 (2015/03/26)
11행째가 $request_token = []
로 되어 있었습니다만, 움직이지 않는 경우가 있다, 라고 하는 것으로 조사해 보았더니, 이 단축기법은, PHP 5.4 이후로 사용할 수 있다, 라고 하는 것이었습니다. ( htp //php. 네 t/마누아 l/쟈/펑구게. type s. 어쩌면 y. php )
추가 (2015/03/27)
PHP 5.4부터 array()
의 단축기법인 []
를 사용할 수 있습니다.
//以下の2行は、どちらも同じことをしている。
$hoge = array();
$hoge = [];
즉, PHP 5.3 또는 그 이전을 사용하고 있는 경우, []
(은)는 사용할 수 없다고 하는 것입니다만, PHP 5.3 (은)는 벌써 서포트가 끊어지고 있기 때문에, 최대한 버전 업 해, 모두.[]
(을)를 사용합시다! 라는 것입니다. (자세한 내용은 코멘트 열 참조)
@le_panda_noir 씨, @mpyw 씨, 고마워요!
mypage.php 만들기
이제 사용자 정보를 표시합니다.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//セッションに入れておいたさっきの配列
$access_token = $_SESSION['access_token'];
//OAuthトークンとシークレットも使って TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
//ユーザー情報をGET
$user = $connection->get("account/verify_credentials");
//(ここらへんは、Twitter の API ドキュメントをうまく使ってください)
//GETしたユーザー情報をvar_dump
var_dump( $user );
이렇게 하면 $user
에 사용자 정보가 개체로 저장됩니다.
실행 결과의 예:
object(stdClass)[7]
public 'id' => int 1224353684
public 'id_str' => string '1224353684' (length=10)
public 'name' => string 'SofPyon' (length=38)
public 'screen_name' => string 'sofpyon' (length=7)
public 'location' => string 'Japan' (length=5)
public 'profile_location' => null
(以下、まだまだ続くので省略)
그리고는, 사용자 정보를 표시하고 싶은 장소에, 이하와 같이 출력하면 OK(만약을 위해 htmlspecialchars()
あなたの名前:
<?php echo $user->name; ?>
Twitter API 문서는 여기
(참고) $_SESSION['access_token'] 정보(2015-05-04 추가)
배열.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//login.phpでセットしたセッション
$request_token = []; // [] は array() の短縮記法。詳しくは以下の「追々記」参照
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
//Twitterから返されたOAuthトークンと、あらかじめlogin.phpで入れておいたセッション上のものと一致するかをチェック
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
die( 'Error!' );
}
//OAuth トークンも用いて TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);
//アプリでは、access_token(配列になっています)をうまく使って、Twitter上のアカウントを操作していきます
$_SESSION['access_token'] = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
/*
ちなみに、この変数の中に、OAuthトークンとトークンシークレットが配列となって入っています。
*/
//セッションIDをリジェネレート
session_regenerate_id();
//マイページへリダイレクト
header( 'location: /mypage.php' );
//以下の2行は、どちらも同じことをしている。
$hoge = array();
$hoge = [];
이제 사용자 정보를 표시합니다.
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;
//セッションに入れておいたさっきの配列
$access_token = $_SESSION['access_token'];
//OAuthトークンとシークレットも使って TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
//ユーザー情報をGET
$user = $connection->get("account/verify_credentials");
//(ここらへんは、Twitter の API ドキュメントをうまく使ってください)
//GETしたユーザー情報をvar_dump
var_dump( $user );
이렇게 하면
$user
에 사용자 정보가 개체로 저장됩니다.실행 결과의 예:
object(stdClass)[7]
public 'id' => int 1224353684
public 'id_str' => string '1224353684' (length=10)
public 'name' => string 'SofPyon' (length=38)
public 'screen_name' => string 'sofpyon' (length=7)
public 'location' => string 'Japan' (length=5)
public 'profile_location' => null
(以下、まだまだ続くので省略)
그리고는, 사용자 정보를 표시하고 싶은 장소에, 이하와 같이 출력하면 OK(만약을 위해
htmlspecialchars()
あなたの名前:
<?php echo $user->name; ?>
Twitter API 문서는 여기
(참고) $_SESSION['access_token'] 정보(2015-05-04 추가)
배열.
배열.
//例
array(4) {
["oauth_token"]=>
string(50) "(OAuthトークン)"
["oauth_token_secret"]=>
string(45) "(OAuthトークンシークレット)"
["user_id"]=>
string(10) "1224353684"
["screen_name"]=>
string(7) "sofpyon"
}
실수나 의견 등이 있으시면, 꼭 코멘트해 주세요.
이 샘플이 작동하지 않는 경우에도 주석을 달아주세요!
참고문헌
Sign in with Twitter - TwitterOAuth
Reference
이 문제에 관하여(【PHP】신 TwitterOAuth로 로그인 기능을 구현한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sofpyon/items/982fe3a9ccebd8702867텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)