Socialite Providers 的属性?

file
想问问有没有关于 Socialite Providers 的各种函数的文档链接啊,像 getAccessTokenResponse、setOpenId、userFromToken、这些都是哪来的,我没找到,知道的回复下,谢啦。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
pardon110
最佳答案

关键 是之前在事件服务内注册了一个事件监听器。而主流程是服务注册 -> 启动

   protected $listen = [
        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            'SocialiteProviders\Weixin\WeixinExtendSocialite@handle',
        ],
    ];

而 SocialiteWasCalled 事件,是在 weixin(延迟)服务启动时触发,如下

namespace SocialiteProviders\Manager;
....
    public function boot()
    {
        $socialiteWasCalled = app(SocialiteWasCalled::class);
        event($socialiteWasCalled);
    }

然后它的监听器是这样

namespace SocialiteProviders\Weixin;
...
  /**
     * Register the provider.
     *
     * @param \SocialiteProviders\Manager\SocialiteWasCalled $socialiteWasCalled
     */
    public function handle(SocialiteWasCalled $socialiteWasCalled)
    {
        $socialiteWasCalled->extendSocialite(
            'weixin', __NAMESPACE__.'\Provider'
        );
    }

显然监听器内逻辑对微信驱动器进行了扩展,见 SocialiteProviders\Weixin\Provider 类,主要扩展以下两个公开方法
getAccessTokenResponse、setOpenId
至于方法 userFromToken 则是使用 AbstractProvider 所实现的方法,你如果只看用法的话,直接看接口类就行了比如 Laravel\Socialite\Two\AbstractProviderLaravel\Socialite\Two\ProviderInterface(one,two 为 oauth 协议,这取决于你的配置文件),至于能这样实现,是因为一系列的社会化登录 provider 都会实现这两个接口,或在这两个之扩展。
简述:对于微信 provider 方法,你在 AbstractProvider 类与 Weixin\Provider 类下找公有方法签名,就当查看文档了。

6年前 评论
讨论数量: 4
pardon110

关键 是之前在事件服务内注册了一个事件监听器。而主流程是服务注册 -> 启动

   protected $listen = [
        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            'SocialiteProviders\Weixin\WeixinExtendSocialite@handle',
        ],
    ];

而 SocialiteWasCalled 事件,是在 weixin(延迟)服务启动时触发,如下

namespace SocialiteProviders\Manager;
....
    public function boot()
    {
        $socialiteWasCalled = app(SocialiteWasCalled::class);
        event($socialiteWasCalled);
    }

然后它的监听器是这样

namespace SocialiteProviders\Weixin;
...
  /**
     * Register the provider.
     *
     * @param \SocialiteProviders\Manager\SocialiteWasCalled $socialiteWasCalled
     */
    public function handle(SocialiteWasCalled $socialiteWasCalled)
    {
        $socialiteWasCalled->extendSocialite(
            'weixin', __NAMESPACE__.'\Provider'
        );
    }

显然监听器内逻辑对微信驱动器进行了扩展,见 SocialiteProviders\Weixin\Provider 类,主要扩展以下两个公开方法
getAccessTokenResponse、setOpenId
至于方法 userFromToken 则是使用 AbstractProvider 所实现的方法,你如果只看用法的话,直接看接口类就行了比如 Laravel\Socialite\Two\AbstractProviderLaravel\Socialite\Two\ProviderInterface(one,two 为 oauth 协议,这取决于你的配置文件),至于能这样实现,是因为一系列的社会化登录 provider 都会实现这两个接口,或在这两个之扩展。
简述:对于微信 provider 方法,你在 AbstractProvider 类与 Weixin\Provider 类下找公有方法签名,就当查看文档了。

6年前 评论
liyu001989

我看的源码,你可以尝试着看看

6年前 评论
pardon110

关键 是之前在事件服务内注册了一个事件监听器。而主流程是服务注册 -> 启动

   protected $listen = [
        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            'SocialiteProviders\Weixin\WeixinExtendSocialite@handle',
        ],
    ];

而 SocialiteWasCalled 事件,是在 weixin(延迟)服务启动时触发,如下

namespace SocialiteProviders\Manager;
....
    public function boot()
    {
        $socialiteWasCalled = app(SocialiteWasCalled::class);
        event($socialiteWasCalled);
    }

然后它的监听器是这样

namespace SocialiteProviders\Weixin;
...
  /**
     * Register the provider.
     *
     * @param \SocialiteProviders\Manager\SocialiteWasCalled $socialiteWasCalled
     */
    public function handle(SocialiteWasCalled $socialiteWasCalled)
    {
        $socialiteWasCalled->extendSocialite(
            'weixin', __NAMESPACE__.'\Provider'
        );
    }

显然监听器内逻辑对微信驱动器进行了扩展,见 SocialiteProviders\Weixin\Provider 类,主要扩展以下两个公开方法
getAccessTokenResponse、setOpenId
至于方法 userFromToken 则是使用 AbstractProvider 所实现的方法,你如果只看用法的话,直接看接口类就行了比如 Laravel\Socialite\Two\AbstractProviderLaravel\Socialite\Two\ProviderInterface(one,two 为 oauth 协议,这取决于你的配置文件),至于能这样实现,是因为一系列的社会化登录 provider 都会实现这两个接口,或在这两个之扩展。
简述:对于微信 provider 方法,你在 AbstractProvider 类与 Weixin\Provider 类下找公有方法签名,就当查看文档了。

6年前 评论

@liyu001989 这段看得挺懵的,希望教程能对要看源码才能读懂的函数,注释说明一下功能

6年前 评论
liyu001989

@molangxx 从字面意思这几个方法很好理解啊:

  • getAccessTokenResponse —— 得到 access_token 的响应;
  • setOpenId —— 设置 openid;
  • userFromToken —— 通过 token 获取用户信息。

Socialite Providers 只是将上面的步骤封装好了,如果你了解了 oauth,并不需要深究源码,理解流程就行。

6年前 评论