首页 > 解决方案 > Laravel 5.6 如何重定向到移动应用程序网址?

问题描述

我很难实现Laravel 5.6到移动应用程序网址的重定向。所以这个想法是API处理请求并基于用户代理重定向到应用程序androidios应用程序。

控制器

/**
* 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>

有人遇到过这个吗?或者有什么建议吗?

标签: phplaravel

解决方案


你应该使用这个方法:

$url = env('FORGET_PASSWORD_IOS_URL') . '?$email=' . $email . '&rememberToken=' . $rememberToken;

return redirect()->away($url);


推荐阅读