Socialite Providers 的属性?

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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类下找公有方法签名,就当查看文档了。

5年前 评论
讨论数量: 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类下找公有方法签名,就当查看文档了。

5年前 评论
liyu001989

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

5年前 评论
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类下找公有方法签名,就当查看文档了。

5年前 评论

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

5年前 评论
liyu001989

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

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

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

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!