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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Twitter

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

PHP

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

Q&A

受付中

laravelでtwitterログイン機能までは実現できたけど、そこからPHPでtwitterのニックネームやidを引っ張ってきてデータベースと認証させたい

kantam
kantam

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Twitter

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

PHP

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

1回答

0グッド

0クリップ

180閲覧

投稿2022/11/25 09:02

編集2022/11/25 09:25

前提

すでに作ってあるサイトにlaravelでtwitterログインするところまではできましたが、
そこからログイン情報をPHPで引っ張ってきてデータベースと照合させたいです。
laravelの機能でサイトを作ればよかったのですが、先にサイトを作っていたので、
laravelのtwitterログイン機能だけを使いたいです。
ただ、プログラミング初心者でPHPも少ししか使えないので、twitterのログイン情報をPHPで持ってきたいのですが、
やり方がわからないためご相談させてほしいです。

実現したいこと

  • PHPでtwitterのログイン情報を持ってくる(idだけ持ってこれれば十分です)

発生している問題・エラーメッセージ

エラー表示なし

該当のソースコード

TwitterLoginController.php

1<?php 2 3 namespace App\Http\Controllers; 4 use Illuminate\Http\Request; 5 use Laravel\Socialite\Facades\Socialite; 6use Illuminate\Support\Facades\Log; 7 8 9 class TwitterLoginController extends Controller 10 { 11 /** 12 * Twitterの認証ページヘユーザーをリダイレクト 13 * 14 * @return \Illuminate\Http\Response 15 */ 16 public function redirectToProvider(){ 17 return Socialite::driver('twitter')->redirect(); 18 } 19 /** 20 * Twitterからユーザー情報を取得(Callback先) 21 * 22 * @return \Illuminate\Http\Response 23 */ 24 public function handleProviderCallback() 25 { 26 $user = Socialite::driver('twitter')->user(); 27 Log::info('Twitterから取得しました。', ['user' => $user]); 28 // $user->token; 29 30 } 31 } 32

web.php

1<?php 2 3use Illuminate\Support\Facades\Route; 4use App\Http\Controllers\TwitterLoginController; 5/* 6|-------------------------------------------------------------------------- 7| Web Routes 8|-------------------------------------------------------------------------- 9| 10| Here is where you can register web routes for your application. These 11| routes are loaded by the RouteServiceProvider within a group which 12| contains the "web" middleware group. Now create something great! 13| 14*/ 15 16Route::get('/', function () { 17 return view('welcome'); 18}); 19Route::get('auth/login/twitter', [TwitterLoginController::class, 'redirectToProvider']); 20Route::get('que_list',[TwitterLoginController::class, 'handleProviderCallback']); 21?> 22 23

que_list.php

1<?php session_start(); ?> 2<?php 3 4if (!isset($_GET['page_id'])) { 5 $now = 1; 6} else { 7 $now = 10 * ($_GET['page_id'] - 1); 8} 9try { 10 $db = new PDO('mysql:dbname=データベース名;host=ホスト名', 'id', 'pass'); 11 // INSERT文を変数に格納 12 $entry = $db->query("SELECT * FROM t_que ORDER BY t_que_tit LIMIT 10 OFFSET $now"); 13 $cnt = $db->query("SELECT * FROM t_que"); 14 $count = $cnt->rowCount(); 15 // 挿入する値は空のまま、SQL実行の準備をする 16} catch (PDOException $e) { 17 echo 'DB接続エラー' . $e->getMessage(); 18} 19?> 20<?php include dirname(__FILE__)."/ssi/header1.php"; ?> 21<title>Offcanvas navbar template · Bootstrap v5.0</title> 22<?php include dirname(__FILE__)."/ssi/header2.php"; ?> 23 24<body class="bg-light"> 25 <?php include "ssi/nav.php"; ?> 26 <?php echo $user ?> 27 <div id="myCarousel" class="carousel slide bg-primary" data-bs-ride="carousel"> 28 <div class="carousel-indicators mb-1"> 29 <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button> 30 <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="1" aria-label="Slide 2"></button> 31 <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="2" aria-label="Slide 3"></button> 32 </div> 33 <div class="carousel-inner pb-3"> 34 <div class="carousel-item active"> 35 <div class="container"> 36 <div class="bg-body_a bg-body rounded shadow-sm p-3 my-3"> 37 <div class="card-body"> 38 <div class="d-flex bd-highlight"> 39 <div class="p-2 flex-shrink-1 bd-highlight"><span class="badge bg-primary" style="padding: 10px; font-size:16px; width:40px; height:40px;"> 40 <?php print($icon); ?> 41 </span></div> 42 <div class="p-2 w-100 bd-highlight"><a class="rounded" href="que_detail?que=<?php print($resister['t_que_id']); ?>"></a><span class="fs-4"><?php print(mb_substr($resister['t_que_tit'], 0, 50)); ?></span><br> 43 </div> 44 </div> 45 <?php print($resister['t_category']); ?> <time><?php print($resister['t_date']); ?></time> 46 </div> 47 </div> 48 </div> 49 </div> 50 <div class="carousel-item"> 51 <div class="container"> 52 <div class="bg-body_a bg-body rounded shadow-sm p-3 my-3"> 53 <div class="card-body"> 54 <div class="d-flex bd-highlight"> 55 <div class="p-2 flex-shrink-1 bd-highlight"><span class="badge bg-primary" style="padding: 10px; font-size:16px; width:40px; height:40px;"> 56 <?php print($icon); ?> 57 </span></div> 58 <div class="p-2 w-100 bd-highlight"><a class="rounded" href="que_detail?que=<?php print($resister['t_que_id']); ?>"></a><span class="fs-4"><?php print(mb_substr($resister['t_que_tit'], 0, 50)); ?></span><br> 59 </div> 60 </div> 61 <?php print($resister['t_category']); ?> <time><?php print($resister['t_date']); ?></time> 62 </div> 63 </div> 64 </div> 65 </div> 66 </div> 67 <button class="carousel-control-prev" type="button" data-bs-target="#myCarousel" data-bs-slide="prev"> 68 <span class="carousel-control-prev-icon" aria-hidden="true"></span> 69 <span class="visually-hidden">Previous</span> 70 </button> 71 <button class="carousel-control-next" type="button" data-bs-target="#myCarousel" data-bs-slide="next"> 72 <span class="carousel-control-next-icon" aria-hidden="true"></span> 73 <span class="visually-hidden">Next</span> 74 </button> 75 </div> 76 <main class="container"> 77 78 <div> 79 <div class="text-muted"> 80 <article> 81 82 </article> 83 </div> 84 </div> 85 </main> 86 <?php include dirname(__FILE__)."/ssi/footer.php"; ?> 87</body> 88 89</html>

試したこと

PHPのセッションで「TwitterLoginController.php」の$userにある値を入れようとしてみたのですが、
laravelとPHPの書き方の違いのせいか、うまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

PHP7.4
laravel 8.8

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

$user->getId(); でIDが取得できるかと思います。

ちなみに、 @xxx などのTwitterユーザー名を取得する場合は $user->getNickname(); になりますが、これは変更可能なのでID管理するのが良いかと思います。

下記も参考にしてみてください。
Laravel Socialite 8.x Laravel

投稿2022/12/03 12:00

Eggpan

総合スコア1600

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Twitter

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

PHP

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