没有访问令牌无法获取 Facebook 用户的个人资料图片

Can't get facebook user's profile picture without access token

我以这种方式获取用户的个人资料图片:https://graph.facebook.com/USER_ID/picture 直到今天一切都很好。今天我用午餐吃了我的应用程序,我开始获取默认个人资料图片而不是真实图片。

看来我现在需要访问令牌。

不工作

https://graph.facebook.com/USER_ID/picture

工作

https://graph.facebook.com/USER_ID/picture?access_token=ACCESS_TOKEN

问题

发生了什么事?我没有更改 fb 应用程序的代码或配置中的任何内容,昨天一切正常。

重要提示:我的应用程序处于开发模式

根据您的平台,您可以获得临时访问令牌

Android

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    accessToken = AccessToken.getCurrentAccessToken();
}

iOS

- (void)viewDidLoad
{
  [super viewDidLoad];
  NSString *accessToken = [FBSDKAccessToken currentAccessToken];
}

Javascript

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    var accessToken = response.authResponse.accessToken;
  } 
} );

可以在此处找到更详细的代码片段和解释 https://developers.facebook.com/docs/facebook-login/access-tokens

获得 accessToken 后,您可以使用 API 从 Graph API 中获取用户的 Facebook 个人资料图片,正如您所说。

我还在 Java 上的 Android Studio 中获取默认的灰色 Facebook 个人资料图片。我在 Gradle 中有以下 facebook-login 版本 8.2.0 依赖项: implementation 'com.facebook.android:facebook-login:8.2.0'.

我在 Java 的 Android Studio 中编写代码。对我有用的解决方案是在使用此行登录时获取个人资料图片:

Uri photoUrl = Profile.getCurrentProfile().getProfilePictureUri(200, 200);

其中 Profile 来自 import com.facebook.Profile.