Использование OpenID Steamauthentification в CakePHP 3

#php #cakephp #openid #cakephp-3.0

#php #cakephp #OpenID #cakephp-3.0

Вопрос:

Я пытаюсь заставить OpenID Steamauthentification работать в моем приложении CakePHP3, используя это в качестве своего источника: https://github.com/SmItH197/SteamAuthentication

Я создал новый компонент аутентификации, и он работает нормально, но мне пришлось добавить несколько строк кода (помеченных // ), которые, на мой взгляд, просто не имеют смысла:

     public function authenticate(Request $request, Response $response)
    {

        $openid = new LightOpenID($steamauth['domainname']);

        debug($openid);// 
        if (!$openid->mode) {
            $openid->identity = 'http://steamcommunity.com/openid';
            header('Location: ' . $openid->authUrl());
            $openid->authUrl();// 
            debug($openid);// 
        } elseif ($openid->mode == 'cancel') {
            echo 'User has canceled authentication!';
        } else {
            if ($openid->validate()) {
                $id = $openid->identity;
                $ptn = "/^http://steamcommunity.com/openid/id/(7[0-9]{15,25} )$/";
                preg_match($ptn, $id, $matches);

                debug($matches[1]);// steam id
                return $matches;
            } else {
                return false;
            }
        }
        return false;
    }
  

Итак, без этих 3 строк это не работает. debug возвращает саму переменную, а authUrl() возвращает строку Url.
У кого-нибудь есть идея, почему я должен возвращать переменные, чтобы запустить это? Может ли это быть проблемой PHP7?

Соответствующий метод можно найти в файле githubrep steamauth.php .

Ответ №1:

authUrl(): является ли запрос URL-адреса для аутентификации в соответствии с вашей версией аутентификации, проверьте здесь строку 854

возврат функции: функция возвращает в основном TRUE и FALSE, если какие-либо данные возвращаются, то они работают как true; если нет, то возвращается как false.

В вашем случае, если вы возвращаете TRUE

 return true;
  

установить

  return $matches;
  

это также должно работать