【问题标题】:Getting phone number from Facebook Account Kit从 Facebook Account Kit 获取电话号码
【发布时间】:2016-05-03 15:49:42
【问题描述】:

Account Kit 文档指出,如果您使用 AccountKitActivity.ResponseType.TOKEN 开始登录会话,则可以通过调用 getCurrentAccount() 访问当前帐户的 Account Kit ID、电话号码和电子邮件。

如果像 Saavn 那样从 AccountKitActivity.ResponseType.CODE 开始,是否可以获得用户的电话号码?

【问题讨论】:

  • 我不完全确定你在这里问什么,你的问题很广泛。但是没有办法获取 facebook 用户的电话号码。没有API,这是不可能的。
  • @luschn Facebook 推出了 AccountKit,它允许用户仅使用他们的电话号码登录,如developers.facebook.com/docs/accountkit/android/integrating 所示。使用令牌登录时,可以检索电话号码。如果我改用 CODE 方法,我需要知道是否可以这样做。
  • 好的,不知道。不过,你的问题太宽泛了,你应该做一些测试并包含你的代码。

标签: android facebook login


【解决方案1】:

是的,只要您在配置中使用 LoginType.PHONE 即可。

    AccountKit.getCurrentAccount(new AccountKitCallback<Account>() {
        @Override
        public void onSuccess(final Account account) {
            String accountKitId = account.getId();
            PhoneNumber phoneNumber = account.getPhoneNumber();
            String phoneNumberString = phoneNumber.toString();
        }

        @Override
        public void onError(final AccountKitError error) {
            // Handle Error
        }
    });

这是您的电话号码:phoneNumberString;但是,如果在您的配置中使用了 LoginType.PHONE,account.getEmail() 将返回 null。
如果您在配置中使用 LoginType.EMAIL,反之亦然。

【讨论】:

  • 将或可能。因为,因为它可用。我认为除非用户使用电话号码而不是电子邮件进行注册,否则数据将附加到它。
  • youtu.be/o2-PCiiJzr4 - PHP 集成和代码示例,以防万一帮助他人。
  • @ayz4sci 你确定 account.getEmail() 在这种情况下会返回 null,即使它与 Facebook 帐户相关联?
  • 谁来保存这个号码呢?如果我获得授权码,如何在服务器端获取电话号码以便将签名的 JWT 返回给我的应用程序?
【解决方案2】:

您可以使用以下代码获取帐户 ID、电子邮件和电话号码:

    let accountKit = AKFAccountKit(responseType: AKFResponseType.accessToken)
    accountKit.requestAccount { (account, error) in
     if(error != nil){
        //error while fetching information
      }else{
        print("Account ID  \(account?.accountID)")
        if let email = account?.emailAddress,email.characters.count > 0{
             print("Email\(email)")
        }else if let phoneNum = account?.phoneNumber{
             print("Phone Number\(phoneNum.stringRepresentation())")
        }
      }
    }

【讨论】:

    【解决方案3】:

    如果你有access code/token...

    serverclient 上,您可以用FB AccountKit API - https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxxaccess token 换成mobile number and country code。这里xxxxxxxxxx 是你的Access Token

    如果您改为使用auth code/token...

    您可以先将 server side 上的access code 换成access token(因为它包含App Secret)与此API - @ 987654322@。这里xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz 分别是auth codeapp idapp secret。一旦你有了access token,你就可以得到mobile number和上面提到的API

    祝你好运。

    【讨论】:

      【解决方案4】:

      使用 CODE 而不是 TOKEN 的目的是将令牌请求转移到您的应用程序服务器。服务器使用 Graph api 提交授权令牌,如果授权令牌有效,则调用返回访问令牌,然后用于验证用户的身份以供后续 API 调用。

      验证访问令牌的图形调用会返回帐户工具包 ID 以及其他元数据,例如关联的电话号码和/或电子邮件。

      {  
         "id":"12345",
         "phone":{  
            "number":"+15551234567"
            "country_prefix": "1",
            "national_number": "5551234567"
         }
      }
      

      【讨论】:

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