Laravel 5.6如何重定向到移动应用程序URL?

时间:2019-03-05 09:52:18

标签: php laravel

我难以实现通过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>

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

1 个答案:

答案 0 :(得分:0)

您应该使用此方法:

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

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