【问题标题】:Laravel socialite: always grab default avatarLaravel 社交名媛:总是抓取默认头像
【发布时间】:2020-09-17 10:13:57
【问题描述】:

我允许用户使用 Scialite 进行注册(仍在启用 openSSL 的 Laravel homestead 本地工作)。它适用于 FB,除了头像它总是得到默认图像。我正在使用创建应用程序的同一 FB 帐户进行测试(FB 应用程序处于开发模式)

代码

public function handleProviderCallback($provider)
{
    $userSocial =   Socialite::driver($provider)->user();
    $users       =   User::where(['email' => $userSocial->getEmail()])->first();
    if($users){
        Auth::login($users);
        return redirect('/');
    }else{
        $avatar_file_name = 'test';
        if(!empty($userSocial->getAvatar()) && $userSocial->getAvatar()!='' && $userSocial->getAvatar() != null)
        {
            $fileContents = file_get_contents($userSocial->getAvatar());
            File::put(public_path() . '/uploads/' . $userSocial->getId() . ".jpg", $fileContents);
            $avatar_file_name =  $userSocial->getId() . ".jpg";
        }

        $user = User::create([
            'name'          => $userSocial->getName(),
            'email'         => $userSocial->getEmail(),
            'avatar'         => $avatar_file_name,
            'provider_id'   => $userSocial->getId(),
            'provider'      => $provider,
        ]);
        Auth::login($user, true);
        return redirect()->route('home');
    }
}

当我dd($userSocial->getAvatar()) 并复制 URL 时,它会打开默认头像(上图),这是为什么呢?有什么我必须做的 FB 应用程序或登录代码来获取用户的真实头像?

【问题讨论】:

    标签: facebook laravel-6 laravel-socialite


    【解决方案1】:

    我现在遇到了这个问题。大约一个月前,社交名流头像检索工作正常。但是几天前我检查它时它坏了。因此,当前的解决方案只是附加了 access_token 来检索如下图像。

    https://graph.facebook.com/v3.3/[facebook_user_id]/picture?type=normal&access_token=[fbtoken]

    如果您找到更简单的解决方案,请告诉我。

    结果是:

    【讨论】:

    • 谢谢,但是如何使用社交名流获取 fb 令牌?
    • @PHPUser 你试过 $fbtoken = $userSocial->token; ?也请 dd($userSocial) 在那里你可以找到令牌。
    • 您的方法运行良好,非常感谢。你能得到不同尺寸的头像而不是这个很小的头像吗?
    • @PHPUser 您可以指定类型,例如 picture?type=large 或 picture?width=600&height=600 以检索更具体的尺寸。
    【解决方案2】:

    access_token 附加到查询中。像这样:

    $social = Socialite::driver('facebook')->user();
    $avatar = $social->avatar_original . "&access_token={$social->token}";
    

    $avatar 变量将包含头像的正确 url。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2017-03-04
      • 2018-12-20
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多