我认为我想要的是非常基本的,因为我还在学习Laravel,所以我找不到合适的语法。
所以,我在我的网站上使用谷歌验证登录。这需要对我的后端发出必须处理的post请求,我已将此逻辑放在控制器中。我的routes.php:
Route::post('google' , [
'as' => 'verify.index',
'uses' => 'verify@verifyIdToken'
]);
我的控制器(verify.php):
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class verify extends Controller
{
public function verifyIdToken($token)
{
$token = $_POST['id'];
$email = $_POST['email'];
return $this->getAuth()->verifyIdToken($token);
echo $this->getAuth()->verifyIdToken($token);
return view('aviewII')->with(['verify' => json_encode(verifyIdToken($token)),'email'=> json_encode($email)]);
}
}
当然,由于控制器中的函数是如何编写的,我得到以下错误Missing argument 1 for App\Http\Controllers\verify::verifyIdToken()
我的问题是,如何告诉控制器中的函数将$_POST['id']
作为参数对于$token
?
这样的事情:
Route::post('google' , [
'as' => 'verify.index',
'uses' => 'verify@verifyIdToken ~with $_POST['id'] as $token'
]);
如需其他参考,我的实际发帖请求如下:
$.post( "http://example.com/google", {email:profile.getEmail(),id:id_token} );
答案 0 :(得分:2)
控制器方法:
public function verifyIdToken(Request $request)
{
// Not necessary but a better practice for ajax 'POST' responses.
if($request->ajax() && $request->isMethod('post'))
{
return $request::get('token');
}
}
路线:
Route::post('google', ['as' => 'some.alias', 'uses' => 'SomeController@verifyIdToken']);
答案 1 :(得分:1)
您正在寻找Laravel的request
课程。您应该在方法上键入提示类,然后允许大量选项实际获取数据。类似的东西:
use Illuminate\Http\Request;
public function verifyIdToken(Request $request)
{
$token = $request->input('id');
$email = $request->input('email');
return $this->getAuth()->verifyIdToken($token);
echo $this->getAuth()->verifyIdToken($token);
return view('aviewII')->with(['verify' => json_encode(verifyIdToken($token)),'email'=> json_encode($email)]);
}
documentation on it有更多有用的信息。