我很难实现Laravel 5.6到移动应用程序网址的重定向。所以这个想法是API处理请求并基于用户代理重定向到应用程序android或ios应用程序。
控制器
/**
* Reset password redirect logic.
* Redirect user to either android or iphone app based on http user agent.
*
* @param RedirectRequest $request
* @return RedirectResponse
*/
public function redirect(RedirectRequest $request): RedirectResponse
{
$email = $request->get('email');
$rememberToken = $request->get('rememberToken');
$userAgent = $request->server('HTTP_USER_AGENT');
if (strpos(strtolower( $userAgent ), 'iphone' ) !== false) {
return redirect()->to(
env('FORGET_PASSWORD_IOS_URL') . '?$email=' . $email . '&rememberToken=' . $rememberToken
);
} else if (strpos(strtolower( $userAgent ), 'android' ) !== false) {
return redirect()->to(
env('FORGET_PASSWORD_ANDROID_URL') . '?$email=' . $email . '&rememberToken=' . $rememberToken
);
}
}
.env
# URL SCHEMA FROM MOBILE APP DEVELOPERS.
FORGET_PASSWORD_IOS_URL=mobileapp://
FORGET_PASSWORD_ANDROID_URL=mobileapp://
所以这背后的想法是,当用户从移动应用程序请求重置密码时,他们会收到一封电子邮件,该电子邮件将包含一个指向 api 的链接。一旦用户访问一个链接,他们将被重定向到 android 或 ios 应用程序以继续。
用户在电子邮件中收到的链接如下所示。http://api.url.com/password-reset?email=<email>&rememberToken=<TOKEN>
用户访问网址后,我希望结果会出现在浏览器中。
mobileapp://?email=me@email.com&rememberToken=<TOKEN>
实际结果。
http://api.url.com/mobileapp:?email=me@email.com&rememberToken=<TOKEN>
有人遇到过这个吗?或者有什么建议吗?