teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コードの記述

2019/09/02 08:57

投稿

komaneko
komaneko

スコア5

title CHANGED
File without changes
body CHANGED
@@ -24,7 +24,123 @@
24
24
  ■気になる点
25
25
  ・自分以外のユーザーがログインできない
26
26
 
27
+ config.php
28
+ ```config
29
+ <?php
30
+ //アプリケーションの Consumer Key と Consumer Secret
31
+ $sTwitterConsumerKey = '●●●●●'; //Consumer Key (API Key)
32
+ $sTwitterConsumerSecret = '●●●●●'; //Consumer Secret (API Secret)
33
+
34
+ //アプリケーションのコールバックURL
35
+ $sTwitterCallBackUri = 'https://●●●●●/twitter-restapi/login/callback.php'; //コールバックURL
36
+
37
+ //変数初期化
38
+ $objTwitterConection = NULL; //TwitterOAuthクラスのインスタンス化
39
+ $aTwitterRequestToken = array(); //リクエストトークン
40
+ $sTwitterRequestUrl = ''; //認証用URL
41
+ $objTwitterAccessToken = NULL; //アクセストークン
42
+ $objTwUserInfo = NULL; //ユーザー情報
43
+ ?>
44
+ ```
27
45
 
46
+ login.php
47
+ ```login
48
+ <?php
49
+ ##############################################
50
+ ### 初期設定
51
+
52
+ //セッションスタート
53
+ session_start();
54
+
55
+ //文字セット
56
+ header("Content-type: text/html; charset=utf-8");
57
+
58
+ //インクルード
59
+ require_once 'config.php';
60
+ require_once 'twitteroauth/autoload.php';
61
+
62
+ //インポート
63
+ use Abraham\TwitterOAuth\TwitterOAuth;
64
+
65
+ ##############################################
66
+ ### twitter oauth request token 取得
67
+
68
+ //TwitterOAuthクラスをインスタンス化
69
+ $objTwitterConection = new TwitterOAuth($sTwitterConsumerKey, $sTwitterConsumerSecret);
70
+
71
+ //oauthリクエストトークンの取得
72
+ $aTwitterRequestToken = $objTwitterConection->oauth('oauth/request_token', array('oauth_callback' => $sTwitterCallBackUri));
73
+
74
+ //oauthリクエストトークンをセッションに格納
75
+ $_SESSION['twOauthToken'] = $aTwitterRequestToken['oauth_token'];
76
+ $_SESSION['twOauthTokenSecret'] = $aTwitterRequestToken['oauth_token_secret'];
77
+
78
+ ##############################################
79
+ ### twitter 認証へ
80
+
81
+ //Twitter認証URLの作成
82
+ $sTwitterRequestUrl = $objTwitterConection->url('oauth/authenticate', array('oauth_token' => $_SESSION['twOauthToken']));
83
+
84
+ //Twitter認証画面へリダイレクト
85
+ header('location: '.$sTwitterRequestUrl);
86
+ ?>
87
+
88
+ ```
89
+ callback.php
90
+ ```callback
91
+ <?php
92
+ ##############################################
93
+ ### 初期設定
94
+
95
+ //セッションスタート
96
+ session_start();
97
+
98
+ //文字セット
99
+ header("Content-type: text/html; charset=utf-8");
100
+
101
+ //インクルード
102
+ require_once 'config.php';
103
+ require_once 'twitteroauth/autoload.php';
104
+
105
+ //インポート
106
+ use Abraham\TwitterOAuth\TwitterOAuth;
107
+
108
+ ##############################################
109
+ ### oauthトークン確認
110
+ if(empty($_SESSION['twOauthToken']) || empty($_SESSION['twOauthTokenSecret']) || empty($_REQUEST['oauth_token']) || empty($_REQUEST['oauth_verifier'])){
111
+ echo 'error token!!';
112
+ exit;
113
+ }
114
+ if($_SESSION['twOauthToken'] !== $_REQUEST['oauth_token']) {
115
+ echo 'error token incorrect!!';
116
+ exit;
117
+ }
118
+
119
+ ##############################################
120
+ ### アクセストークン作成
121
+
122
+ //取得したoauthトークンでTwitterOAuthクラスをインスタンス化
123
+ $objTwitterConection = new TwitterOAuth
124
+ (
125
+ $sTwitterConsumerKey,
126
+ $sTwitterConsumerSecret,
127
+ $_SESSION['twOauthToken'],
128
+ $_SESSION['twOauthTokenSecret']
129
+ );
130
+
131
+ //アクセストークンの取得
132
+ $_SESSION['twAccessToken'] = $objTwitterConection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
133
+
134
+ //メンバーページへリダイレクト
135
+ header('location: member.php');
136
+
137
+ ```
138
+
139
+ member.php
140
+ ```member
141
+ エラーが起きなければ、ここでDBにTwitterの情報を登録する処理をしています。
142
+ ```
143
+
28
144
  Twitterログイン認証の使用意図としましては、
29
145
  Twitterで使われているアイコンやニックネーム、フォロー数などの情報をDBに保存し、Webサービス上で表示するという使い方をしています。
30
146