Php 将社交登录上的头像Url替换为Laravel社交名流

Php 将社交登录上的头像Url替换为Laravel社交名流,php,laravel,facebook-login,avatar,Php,Laravel,Facebook Login,Avatar,我面临着一个问题,我登录社交网络,一切都很完美,但我的问题是头像。当我登录时,我得到了包括头像在内的所有数据,但头像是用社交网络原始Url保存在我的数据库中的,我想用我的Url保存它 换句话说,我使用时间戳和原始文件扩展名在Laravel 这是控制器中的my provider回调方法 public function handleProviderCallback(Request $request, $provider) { try { $socialUser

我面临着一个问题,我登录社交网络,一切都很完美,但我的问题是头像。当我登录时,我得到了包括头像在内的所有数据,但头像是用社交网络原始Url保存在我的数据库中的,我想用我的Url保存它

换句话说,我使用时间戳和原始文件扩展名在
Laravel

这是控制器中的my provider回调方法

public function handleProviderCallback(Request $request, $provider)
 {
     try
     {
         $socialUser = Socialite::driver($provider)->user();
     }
     catch(\Exception $e)
     {
         return redirect('/');
     }
     //Check if we have logged on Social Provider

     $socialProvider =   SocialProvider::where('provider_id', $socialUser->getId())->first();
     if (!$socialProvider)
     {
         //Create a new user and provider
         $user = new User;
         $user->name = $socialUser->getName();
         $user->profilepic = $socialUser->getAvatar();
         $user->email = $socialUser->getEmail();

         if($request->hasFile('avatar')){
             $profilepic = $request->file('avatar');
             $filename = time() . '.' . $profilepic->getClientOriginalExtension();
             Image::make($profilepic)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );
             $user->profilepic = $filename;
         }

         $user->save();

         // $user = User::firstOrCreate([
         //   'name'  =>  $socialUser->getName(),
         //   'profilepic' => $socialUser->getAvatar(),
         //   'email' =>  $socialUser->getEmail()
         // ]);

         $user->socialProviders()->create(
           ['provider_id' => $socialUser->getId(), 'provider' => $provider]
         );

     Session::flash('success', 'Tu cuenta ha sido enlazada correctamente, sin embargo, ahora debes crear una contraseña. Crea tu contraseña ahora.');

    $user->save();
     auth()->login($user);

     return redirect('account-complete');

     }
     else
         $user = $socialProvider->user;

     auth()->login($user);

     return back();

 }
我通过facebook获得此URL:

https://graph.facebook.com/v2.10/10155364486426042/picture?type=normal
这就是我想要的

http://localhost:8000/uploads/avatars/1519702861.jpg

提前感谢

您可以这样做:

if ($socialUser->getAvatar()) {
    $filename = "uploads/avatar/".time().".jpg"; 
    // The filename to save in the database.
    file_put_contents(
        $filename, 
        file_get_contents($socialUsr->getAvatar())
    );
}
如果目标目录可由php写入,则上述方法将起作用


希望这有帮助。

谢谢,我已将“图像”保存到数据库“名称”中,但问题是图像不在我的文件夹中。。使用此方法,我将获得文件夹中的图像和数据库中的名称,对吗?是的。你完全可以做到。请看编辑后的答案。我已经发表了一些评论。