php - Laravel 5.6 如何重定向到移动应用程序网址?
问题描述
我很难实现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>
有人遇到过这个吗?或者有什么建议吗?
解决方案
你应该使用这个方法:
$url = env('FORGET_PASSWORD_IOS_URL') . '?$email=' . $email . '&rememberToken=' . $rememberToken;
return redirect()->away($url);
推荐阅读
- pandas - 如何使用 np.where 将字符串转换为数组
- java - 如何在android中保存webview的滚动位置
- python-3.x - 为什么滚动文本没有增加它在 tkinter 中的大小(重量)
- c - C 如何处理包含空字符的多字节字符?
- html - 如何修复我的幻灯片越过我的粘性导航栏?
- php - 使用 laravel 包时没有定义路由
- c++ - 将字符数组传递给C++中的构造函数参数化
- typescript - 无法将具有类型字段的对象推送到数组(Typescript 错误)
- machine-learning - 你能比较具有相同数据库的模型的倾向得分吗?
- php - 如何否定正则表达式中的特定单词