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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

286閲覧

laravel5.5 + vue.jsでソーシャルログインの機能を作成する

gomengo

総合スコア51

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/02/08 13:00

編集2018/02/08 14:02

laravel5.5 + vue.jsを使用しソーシャルログインの昨日を実装しようとしています。

ソーシャルログイン

上記のリンク先を参照し、非同期で、下記のプログラムのtwitterAuthのメソッドを動かしています。

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6 7use JWTAuth; 8use Tymon\JWTAuth\Exceptions\JWTException; 9 10use App\Http\Requests; 11use App\Http\Controllers\Controller; 12 13class AuthenticateController extends Controller 14{ 15 /** 16 * コンストラクタ 17 */ 18 public function __construct(){ 19 // twitterAuth追加 20 $this->middleware('jwt.auth', ['except' => ['showSignIn', 'auth', 'twitterAuth']]); 21 } 22 // 省略 23 24 /** 25 * authenticate with twitter oauth 26 * @param Request $request 27 * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector 28 */ 29 public function twitterAuth(Request $request) 30 { 31 // get data from request 32 $token = $request->get('oauth_token'); 33 $verify = $request->get('oauth_verifier'); 34 35 // get twitter service 36 // エラーがでたのでデフォルトの StreamClient から CurlClient に変更 37 \OAuth::setHttpClient('CurlClient'); 38 $tw = \OAuth::consumer('Twitter'); 39 40 if ( ! is_null($token) && ! is_null($verify) ){ 41 42 // twitterのAPIから認証情報を取得してくる 43 $token = $tw->requestAccessToken($token, $verify); 44 //$accessToken = $token->getAccessToken(); 45 //$accessTokenSecret = $token->getAccessTokenSecret(); 46 $params = $token->getExtraParams(); 47 $twitterId = $params['user_id']; 48 $username = $params['screen_name']; 49 50 // ユーザー情報の保存 51 $user = User::firstOrNew(['twitter_id' => $twitterId]); 52 $user->name = empty($user->name) ? $username : $user->name; 53 $user->twitter_id = $twitterId; 54 $user->save(); 55 56 // Json Web Tokenの発行 57 $apiAccessToken = JWTAuth::fromUser($user); 58 return response()->json(['token' => $apiAccessToken]); 59 } 60 else { 61 $reqToken = $tw->requestRequestToken(); 62 63 $url = $tw->getAuthorizationUri(['oauth_token' => $reqToken->getRequestToken()]); 64 65 return redirect((string) $url); 66 } 67 } 68 // 省略 69}

上記のプログラムの「return redirect((string) $url);」の部分までは動いているのですが
リダイレクトをすると、
Failed to load https://api.twitter.com/oauth/authenticate?oauth_token=_kxxxx: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://161.xx.xxx.xxx' is therefore not allowed access. The response had HTTP status code 400.

というエラーが表示され、Twitterの認証ページへリダイレクトされません。

CORS等について調べたのですが、解決方法がわかりません。
centos 7 nginx php を使用しています。

そもそもの考え方自体が間違えているのでしょうか。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

非同期ではページをリダイレクト出来ない点を失念していました。

投稿2018/02/08 14:16

gomengo

総合スコア51

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問