質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1198閲覧

TwitterOAuthでログイン認証時のエラーで困っています

komaneko

総合スコア5

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/09/02 08:49

編集2019/09/02 08:57

TwitterOAuthを利用して、Twitterアカウントでのログインを実装しています。

https://wepicks.net/twitter-restapi-login/
上記の記事を参考に、実装したところ問題なくログインすることができました。

しかし、Webサービスを公開したところ
私以外のユーザーが「error token!!」でログインできない事象が起こっております。

私のTwitterアカウントではログインできますが、
他のユーザーではログインできない原因は何でしょうか。

Twitterアプリケーションは登録しており、
Consumer API keysも正しく入力しています。

Twitterアプリケーションの登録画面にて表示される
「Access token & access token secret」
は、記述する箇所が特になかったのでどこにも入れておりません。
※これはユーザーごとに発行されるので、入れる意味はないという認識です。

プログラミング経験がまだ浅く、
エラー解決できずに困っております。

■気になる点
・自分以外のユーザーがログインできない

config.php

config

1<?php 2//アプリケーションの Consumer Key と Consumer Secret 3$sTwitterConsumerKey = '●●●●●'; //Consumer Key (API Key) 4$sTwitterConsumerSecret = '●●●●●'; //Consumer Secret (API Secret) 5 6//アプリケーションのコールバックURL 7$sTwitterCallBackUri = 'https://●●●●●/twitter-restapi/login/callback.php'; //コールバックURL 8 9//変数初期化 10$objTwitterConection = NULL; //TwitterOAuthクラスのインスタンス化 11$aTwitterRequestToken = array(); //リクエストトークン 12$sTwitterRequestUrl = ''; //認証用URL 13$objTwitterAccessToken = NULL; //アクセストークン 14$objTwUserInfo = NULL; //ユーザー情報 15?>

login.php

login

callback.php

callback

1<?php 2############################################## 3### 初期設定 4 5//セッションスタート 6session_start(); 7 8//文字セット 9header("Content-type: text/html; charset=utf-8"); 10 11//インクルード 12require_once 'config.php'; 13require_once 'twitteroauth/autoload.php'; 14 15//インポート 16use Abraham\TwitterOAuth\TwitterOAuth; 17 18############################################## 19### oauthトークン確認 20if(empty($_SESSION['twOauthToken']) || empty($_SESSION['twOauthTokenSecret']) || empty($_REQUEST['oauth_token']) || empty($_REQUEST['oauth_verifier'])){ 21 echo 'error token!!'; 22 exit; 23} 24if($_SESSION['twOauthToken'] !== $_REQUEST['oauth_token']) { 25 echo 'error token incorrect!!'; 26 exit; 27} 28 29############################################## 30### アクセストークン作成 31 32//取得したoauthトークンでTwitterOAuthクラスをインスタンス化 33$objTwitterConection = new TwitterOAuth 34 ( 35 $sTwitterConsumerKey, 36 $sTwitterConsumerSecret, 37 $_SESSION['twOauthToken'], 38 $_SESSION['twOauthTokenSecret'] 39 ); 40 41//アクセストークンの取得 42$_SESSION['twAccessToken'] = $objTwitterConection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier'])); 43 44//メンバーページへリダイレクト 45header('location: member.php'); 46

member.php

member

1エラーが起きなければ、ここでDBにTwitterの情報を登録する処理をしています。

Twitterログイン認証の使用意図としましては、
Twitterで使われているアイコンやニックネーム、フォロー数などの情報をDBに保存し、Webサービス上で表示するという使い方をしています。

厳しいご意見も真摯に受け止めます。
皆様からのアドバイスをお待ちしております。

何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

error token!!を出しているのが、callback.php なのであれば、原因は明白なので、どの値が条件に合致しているか調査することが必要です。

他者のリソースを利用するのであれば、最低限条件分岐の切り分けはできていないとマズイです。api 利用の前に、デバッグ方法を学んでください。

投稿2019/09/02 10:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問