用户手机号码不通过 Facebook 帐户验证,仅在使用帐户 Facebook 套件时通过短信验证

Posted

技术标签:

【中文标题】用户手机号码不通过 Facebook 帐户验证,仅在使用帐户 Facebook 套件时通过短信验证【英文标题】:User mobile number not verifying via Facebook account,only verifying via sms when using Account Facebook kit 【发布时间】:2016-12-28 06:23:05 【问题描述】:

我已按照以下链接使用 facebook 帐户工具包 SDK 验证用户手机号码。

https://developers.facebook.com/docs/accountkit/android

添加 facebook 应用程序 ID、客户端 ID 和应用程序令牌, 在manifest 文件中使用所有必需的权限,例如RECEIVE_SMSREAD_PHONE_STATEINTERNET

 <activity
        android:name="com.facebook.accountkit.ui.AccountKitActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/ak_login_protocol_scheme" />
        </intent-filter>
    </activity>

FACEBOOK_APP_ID(xxxxxxx), ACCOUNT_KIT_CLIENT_TOKEN(xxxxx),ak_login_protocol_scheme(akxxxxxx) 在 string.xml 中定义并使用上面链接中提到的应用程序中的代码。 它仅适用于使用 SMS 未经验证的直接 facebook 帐户验证的手机号码。请为我提供解决此问题的任何解决方案。

MainActivity 类

public class MainActivity extends AppCompatActivity implements  View.OnClickListener 
    Button send;
    public static int APP_REQUEST_CODE = 99;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AccountKit.initialize(getApplicationContext());
        send = (Button) findViewById(R.id.send);
        send.setOnClickListener(this);
    


    @Override
    public void onClick(View v) 
        onLoginPhone();
    

    public void onLoginPhone() 
        final Intent intent = new Intent(this, AccountKitActivity.class);
        AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder = new AccountKitConfiguration.AccountKitConfigurationBuilder(LoginType.PHONE, AccountKitActivity.ResponseType.TOKEN);
        intent.putExtra(AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION, configurationBuilder.build());
        startActivityForResult(intent, APP_REQUEST_CODE);
    

    @Override
    protected void onActivityResult(
        final int requestCode,
        final int resultCode,
        final Intent data) 
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == APP_REQUEST_CODE)  // confirm that this response matches your request
            AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
            String toastMessage;
            if (loginResult.getError() != null) 
                toastMessage = loginResult.getError().getErrorType().getMessage();
                Toast.makeText(this, "Get Error " + loginResult.getError(), Toast.LENGTH_LONG).show();
             else if (loginResult.wasCancelled()) 
                toastMessage = "Login Cancelled";
             else 
                if (loginResult.getAccessToken() != null) 
                    toastMessage = "Success:" + loginResult.getAccessToken().getAccountId();
                 else 
                    toastMessage = String.format("Success:%s...", loginResult.getAuthorizationCode().substring(0, 10));
                
                Toast.makeText(this, "Successfully done", Toast.LENGTH_LONG).show();
            
            Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show();
        
    

【问题讨论】:

您粘贴的重定向 AccountKitActivity 意图仅在您使用电子邮件 Account Kit 登录时才需要。除非您还使用电子邮件,否则您可以将其删除。我不确定您的问题 - 您能否详细说明“它仅适用于使用 SMS 未经验证的直接 Facebook 帐户验证的手机号码。”。 Account Kit 是独立于 Facebook Login 的产品。 【参考方案1】:

ak_login_protocol_scheme 是您的 id 应用程序添加“ak” 例子:

<string name="app_id">1455555555555555555/string>
<string name="ACCOUNT_KIT_CLIENT_TOKEN">332555dcdcddccszzd</string>

<string name="ak_login_protocol_scheme">ak1455555555555555555</string>

【讨论】:

以上是关于用户手机号码不通过 Facebook 帐户验证,仅在使用帐户 Facebook 套件时通过短信验证的主要内容,如果未能解决你的问题,请参考以下文章

登录到Facebook帐户而不使用Facebook客户端API退出应用程序

facebook怎么验证?

使用新帐户创建 Facebook 应用程序

如何在 android 应用程序上使用 facebook 对服务器上的用户进行身份验证

在后端服务中检索 facebook 数据

Android Asmack xmpp 登录仅适用于我自己的 Facebook 帐户