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 を使用しています。
そもそもの考え方自体が間違えているのでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。