-1

我正在研究用户授权应用程序查看他的user_friends后查看某个用户的朋友列表的可能性,但我不太了解这个想法,所以我想知道有没有直接查看列表的方法无需通过图形 API 和其他东西?我正在使用 Laravel 的 Socialite 包登录,它似乎工作得很好,并返回默认信息(电子邮件、姓名、头像等)以及其他允许的信息,如出生日期、位置和家乡。但是,我发现很难查看照片、帖子、朋友和群组等列表。即使用户允许我这样做。

提前非常感谢!

4

3 回答 3

3

你就是做不到。

Facebook 不会让您获得朋友列表,而只能获得已经在使用您的应用程序的朋友列表。在 API 的官方文档中,我们可以阅读:https ://developers.facebook.com/docs/graph-api/reference/v2.3/user/friends

这只会返回任何使用(通过 Facebook 登录)提出请求的应用程序的朋友。如果此人的朋友拒绝 user_friends 权限,该朋友将不会出现在此人的朋友列表中。

更重要的是,您无法从 Laravel 获取使用 Socialite 的朋友列表,因此我建议您为此使用另一个 Laravel 包,例如:https ://github.com/SammyK/LaravelFacebookSdk

干杯!

于 2015-06-09T13:36:07.043 回答
1

所有上述信息仍然是正确的,除了您可以通过将社交名流添加到控制器中的“字段和范围”来获取朋友列表和更多信息......

例如:

$socialUser = Socialite::driver('facebook')->fields(['id', 'email', 'cover', 'name', 'first_name', 'last_name', 'age_range', 'link', 'gender', 'locale', 'picture', 'timezone', 'updated_time', 'verified', 'birthday', 'friends', 'relationship_status', 'significant_other','context','taggable_friends'])->scopes(['email','user_birthday','user_friends','user_relationships','user_relationship_details'])->user();
于 2018-02-20T09:22:37.910 回答
0

这个答案只是扩展并解释了如何使用@jayenne 所说的来完成这项工作。

在您的 redirect() 函数中,您可以进行如下调用:

    public function redirect() {
        return Socialite::driver('facebook')
            ->fields([
                'friends'
            ])
            ->scopes([
                'user_friends'
            ])->redirect();
    }

上面,我们要求 Socialite 请求user_friends权限并将其存储到一个名为friends. 现在,在您的回调中,您可以friends像这样获取 SocialiteUser 中的字段:

   public function callback(SocialFacebookAccountService $service) {
        $socialiteUser = Socialite::driver('facebook')
            ->fields(['friends'])
            ->user();

        //Loop through all the facebook friends returned (who are already on your site and friends with the recently registered user)
        foreach($socialiteUser->user['friends']['data'] as $fbFriend) {
            //do something with this facebook friend here
        }
        //Most tutorials log the user in like this; you define the $service and the method
        //You can find a tutorial in the Socialite docs/github repo
        $user = $service->createOrGetUser($socialiteUser);
        auth()->login($user);
        return redirect('/home');
   }
于 2020-03-12T03:55:35.897 回答