【问题标题】:Get authentication token and user information from Facebook从 Facebook 获取身份验证令牌和用户信息
【发布时间】:2017-02-03 18:30:20
【问题描述】:

我正在使用 Android 版 Facebook 登录。有用。我可以通过模拟器登录。但是,我需要将信息发送回我的 Rails Rest API。 facebook 回调成功后,我想发回访问令牌、提供程序(“facebook”)、uid、facebook 用户名、facebook 用户电子邮件和 facebook 图像图标。

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
  @Override
  public void onSuccess(LoginResult loginResult) {
    Log.i("AUTHENTICATION TOKEN", String.valueOf(loginResult.getAccessToken()));
  }  

Logcat 显示如下:

I/AUTHENTICATION TOKEN: {AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile, contact_email, email]}

我如何获得我需要的信息onSuccess

【问题讨论】:

  • “我想发回访问令牌、提供商(“facebook”)、uid、facebook 用户名、facebook 用户电子邮件和 facebook 图像图标。” ——不,不要那样做。任何人都可以向您的 API 发送带有虚假 ID、姓名和电子邮件的请求。仅发送访问令牌(如果您需要将其与其他类型的令牌区分开来,也可以发送 facebook),然后使用该令牌发出服务器端 API 请求以获取其余用户详细信息。跨度>
  • @CBroe 好点,我会考虑到这一点

标签: android facebook


【解决方案1】:

一旦您使用LoginResult.getAccessToken() 获得访问令牌,

您需要使用收到的访问令牌调用 Facebook Graph api。来自SDK Docs

GraphRequest request = GraphRequest.newMeRequest(
        accessToken,
        new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(
                   JSONObject object,
                   GraphResponse response) {
                // Application code
            }
        });
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email");
request.setParameters(parameters);
request.executeAsync()

JSONObject object 将包含所需的用户信息,前提是用户已授予您应用程序的所有必要权限

用户可用字段列表可见here

【讨论】:

  • 这段代码只给了我一个id和一个名字。但是 uid、电子邮件和 facebook 图标在哪里?它不在结果集中。
  • 如何获取 UID ?这是最重要的部分。
  • id 字段是用户的唯一 ID,并且特定于您的应用程序。检查我在答案最后一行发布的链接以获取可用字段列表
  • 我在该链接上看不到 facebook 图片图标。我需要 facebook 用户的图标。我可以使用他们的 web api 在 oauth2 上获取它。
  • 我终于找到了如何添加图片:parameters.putString("fields", "id,name,email,picture.type(large)");
【解决方案2】:

试试这个

Log.i("AUTHENTICATION TOKEN", AccessToken.getCurrentAccessToken().getToken());

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多