帐户套件文档指出,如果您使用AccountKitActivity.ResponseType.TOKEN开始登录会话,则可以通过调用getCurrentAccount()来访问当前帐户的帐户工具包ID,电话号码和电子邮件。
如果您开始使用AccountKitActivity.ResponseType.CODE,就像Saavn那样,是否可以获取用户的电话号码?
答案 0 :(得分:17)
是的,如果您在配置中使用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。
答案 1 :(得分:4)
使用CODE而不是TOKEN的目的是将令牌请求转移到您的应用程序服务器。服务器使用Graph api提交auth令牌,如果auth令牌有效,则调用返回访问令牌,然后用于验证用户对后续API调用的身份。
验证访问令牌的图形调用会返回帐户工具包ID以及其他元数据,例如关联的电话号码和/或电子邮件。
{
"id":"12345",
"phone":{
"number":"+15551234567"
"country_prefix": "1",
"national_number": "5551234567"
}
}
答案 2 :(得分:3)
您可以使用以下代码获取帐户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 :(得分:1)
access code/token
... 在server
或client
,您可以使用此access token
- https://graph.accountkit.com/v1.1/me/?access_token=xxxxxxxxxxxx与mobile number and country code
交换FB AccountKit API
。此处xxxxxxxxxx
是您的Access Token
。
auth code/token
而不是...... 您可以先在{strong> access code
(因为它包含 App Secret )上与access token
交换server side
,这个API
- https://graph.accountkit.com/v1.1/access_token?grant_type=authorization_code&code=xxxxxxxxxx&access_token=AA|yyyyyyyyyy|zzzzzzzzzz。此处xxxxxxxxxx
,yyyyyyyyyy
和zzzzzzzzzz
分别是auth code
,app id
和app secret
。获得access token
后,您可以使用上述mobile number
获取API
。
祝你好运。