ajaxでAPIルートからアクセストークン取得のコードを呼び出す時に401 (Unauthorized)エラーが出ていしまいます。
いくつか方法を試したのですが、どの方法もエラーが帰ってきます。
php
1//GaController.php 2 3<?php 4 5namespace App\Http\Controllers; 6 7use Illuminate\Http\Request; 8use Google_Client; 9use Analytics; 10 11class GaController extends Controller 12{ 13 14 public function returnAccessToken(){ 15 $newToken = Analytics::getAccessToken(); 16 17 return $newToken; 18 } 19} 20
php
1//api.php 2 3<?php 4 5use Illuminate\Http\Request; 6 7Route::prefix('ga')->group(function(){ 8 Route::post('/getAccessToken', 'GaController@returnAccessToken')->name('ga.returnAccessToken'); 9}); 10 11
js
1 $.ajaxSetup({ 2 headers: { 3 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 4 } 5 }); 6 7 $.ajax({ 8 url: "api/ga/getAccessToken", 9 method: 'post', 10 dataType: "json", 11 12 }).done(function (response){ 13 _accessToken = response['access_token']; 14 15 }).fail(function (jqXHR, textStatus, errorThrown){ 16 console.log('ERROR', jqXHR, textStatus, errorThrown); 17 }); 18
##試したこと1
csrf_tokenの書き忘れなのかと思い、以下の文をajax側に追加しましたが治らず
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
##試したこと2
参考サイト
https://laravel.com/docs/5.4/authentication#http-basic-authentication
セッションでユーザー識別子Cookieを設定せずにHTTP基本認証を使用する方法
php
1//api.php 2 3<?php 4 5use Illuminate\Http\Request; 6 7Route::prefix('ga')->middleware('auth.basic')->group(function(){ 8 Route::post('/getAccessToken', 'GaController@returnAccessToken')->name('ga.returnAccessToken'); 9}); 10 11
こちらの方法では500エラーになってしまいました。
##試したこと3
参考サイト
https://laracasts.com/discuss/channels/laravel/53-api-routes-auth-middleware-confusion
->middleware('auth:api')
追加しましたが、認証エラーが再び帰ってくる
php
1//api.php 2 3<?php 4 5use Illuminate\Http\Request; 6 7Route::prefix('ga')->middleware('auth:api')->group(function(){ 8 Route::post('/getAccessToken', 'GaController@returnAccessToken')->name('ga.returnAccessToken'); 9}); 10 11
ルーティングでのエラーだと思っているのですが、原因のわかる方いましたらよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。