企业微信,网页授权,回调时一直提示 不能get一个null对象.

mx

环境, php7.1.2 easywechat 4.0.7 项目为前后端分离

跟踪源码

    /**
     * {@inheritdoc}
     */
    public function user(AccessTokenInterface $token = null)
    {
        if (is_null($token) && $this->hasInvalidState()) { //$token 确实为null
            throw new InvalidStateException();
        }

    // 继续跟 $this->hasInvalidState()
     /**
     * Determine if the current request / session has a mismatching "state".
     *
     * @return bool
     */
    protected function hasInvalidState()
    {
        if ($this->isStateless()) {
            return false;
        }

        $state = $this->request->getSession()->get('state'); // $this->request 的session 为null

看文档说

当你的应用是分布式架构且没有会话保持的情况下,你需要自行设置请求对象以实现会话共享。比如在 Laravel 框架中支持Session储存在Redis中,那么需要这样:

回调代码如下

        $app = \Yii::$app->wechatwork_lan->work;
        $oauth = $app->oauth;
        $request = $oauth->getRequest();
        $oauth->setRequest($request);
        $user = $oauth->user();
        var_dump($user);
        exit();

根据文档, 需要自行构建 $request 但是我使用的是yii 并且水平很菜. 请问有没有简单的方法,实现 Symfony\Component\HttpFoundation\Session\SessionInterface

谢谢各位.

前后端分离你就在前端拿到 code 与 state 后扔给后端处理就可以了啊

谢谢. 解决了~