服务端配置 微信 的 App_id 及 App_secret 。getAccessTokenResponse 方法是自动抓取的?

config/services.php

'weixin' => [
    'client_id' => env('WEIXIN_KEY'),
    'client_secret' => env('WEIXIN_SECRET'),
    'redirect' => env('WEIXIN_REDIRECT_URI'),  
], 

此处配置以后

$code = 'CODE';
$driver = Socialite::driver('weixin');
$response = $driver->getAccessTokenResponse($code);

getAccessTokenResponse 方法自动抓取了 此处配置嘛?
还有就是 Socialite 这个类是起的别名嘛? 我在vendor/socialiteproviders 下没有发现对应的类呢~

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

    file

  3. 你要找哪个类?安装成功了吗?Socialite::driver('weixin') 在这里 :vendor/socialiteproviders/weixin/Provider.php
5年前 评论
讨论数量: 7
liyu001989
  1. 是使用的这个配置;
  2. Socialite 是个别名;

    file

  3. 你要找哪个类?安装成功了吗?Socialite::driver('weixin') 在这里 :vendor/socialiteproviders/weixin/Provider.php
5年前 评论

@liyu001989 抱歉,能详细一点嘛,我想知道Socialite::driver('weixin');这句代码是怎么把services.php的配置加载到类中的,我刚刚试了,只在.env中配置

WEIXIN_KEY=wxe3xxxxxx
WEIXIN_SECRET=490ff59fcxxxxxxxxxxxxxxxxx
WEIXIN_REDIRECT_URI=xxxxxx

而services.php中不写,生成的类中依然会有appid和secret

file
file

我的疑问是这段自动获取配置的代码到底在哪里,我找了好久都没找到,他是按什么规则来获取配置的

5年前 评论
liyu001989

@simplewater 代码位置在 vendor/socialiteproviders/manager/src/SocialiteWasCalled.php 你慢慢研究一下吧

file

file

5年前 评论

@liyu001989 恩恩,多谢指点,已经找到了,调用配置的函数是在这里
file

这里会自动加载这三个变量,怎么加载的请继续往下看,加载规则如下:
file

规则就是env({$this->providerIdentifier}_{$key}) ,那么这个$this->providerIdentifier实际上就是我们微信包的provider.php里定义的一个常量

file

有了这个常量,social类的内部会自动加载env中的三个变量,这三个变量在这里组合起来就像之前我们定义的那样

file

5年前 评论
liyu001989

你是没有理解 Facade 是怎么运作的,感觉不是三言两语能解释清楚的。

vendor/laravel/socialite/src/SocialiteServiceProvider.php

    public function register()
    {
        $this->app->singleton(Factory::class, function ($app) {
            return new SocialiteManager($app);
        });
    }

初学者先用起来,机制的东西慢慢理解,查查 facade 和 容器的资料,尝试看看源码吧。

5年前 评论

@liyu001989 OK,找到下一步的调用流程了\Illuminate\Support\Facades\Facade.php __callStatic 方法(基础的魔术方法没有get到),。当时也是思考了一番要怎么去学习laravel 直接看文档有些时候概念理解不上去,现在通过练习教程,来发现问题,在通过问题来抓住知识点。我感觉这种学习方式更能加深初学者的理解。 但是也有一个缺点,就是有的时候发现问题了,却不知道应该去看什么知识点了,哈哈。遇到这种情况还的需要向您这样资深使用者来说上一句呢(找到问题的关键点)。

5年前 评论

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