Facebook 即时验证未通过 Facebook 应用验证手机号码

Posted

技术标签:

【中文标题】Facebook 即时验证未通过 Facebook 应用验证手机号码【英文标题】:Facebook Instant Verification is not verifying mobile number via facebook app 【发布时间】:2016-12-30 06:58:02 【问题描述】:

您好,我正在我的应用程序中实现Facebook Instant Verification。在我的应用程序中,我正在验证客户的手机号码,为此我正在发送 OTP 以进行验证。

我想改变方法,因为最近 Facebook 推出了一个概念 Facebook Instant Verification,它根据您在 Facebook 帐户上配置的任何号码来验证手机号码。

https://developers.facebook.com/blog/post/2016/12/20/introducing-instant-verification/

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

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

我已经完成了文章中所说的任何事情,但正如它所写的那样,每当您输入在您的 Facebook 应用程序中配置的相同号码时,Facebook 帐户工具包将根据您的 Facebook 帐户上的任何内容验证您的手机号码,否则它会发送OTP 然后进行验证。

问题

在我的情况下,我输入了在我的 facebook 帐户上配置的相同手机号码并使用最新的 facebook 应用程序,但它仍然没有根据 facebook 应用程序上配置的手机号码验证手机号码,它总是发送 OTP。

因为它应该在没有 OTP 的情况下进行验证。我不确定我的代码和配置中缺少什么,因为它总是使用 OTP 进行验证。

请支持。提前致谢。

AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data android:name="com.facebook.accountkit.ApplicationName"
        android:value="@string/app_name" />
    <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/FACEBOOK_APP_ID" />
    <meta-data android:name="com.facebook.accountkit.ClientToken"
        android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" />

    <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>

</application>

build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig 
        applicationId "spice.in.accountkitfacebookdemo"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    

repositories 
    jcenter()


dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
        exclude group: 'com.android.support', module: 'support-annotations'
    )
    compile 'com.android.support:appcompat-v7:23.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:23.0.1'
    compile 'com.facebook.android:account-kit-sdk:4.+'
    compile 'com.google.android.gms:play-services:10.0.1'

strings.xml

<string name="app_name">AccountKitDemo</string>
<string name="FACEBOOK_APP_ID">XXX</string>
<string name="ACCOUNT_KIT_CLIENT_TOKEN">YYYY</string>
<string name="ak_login_protocol_scheme">akXXX</string>

MainActivity.java

@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.CODE); // or .ResponseType.TOKEN
    // ... perform additional configuration ...
    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();
    



【问题讨论】:

【参考方案1】:

您需要在他们的开发者门户上添加您应用的 Android 密钥哈希,以便即时验证工作。不幸的是,这在当前的即时验证文档中没有明确说明(我们正在努力使其更清楚)。

目前,用户-应用对只能每小时执行一次即时验证。如果您是应用程序的管理员或开发人员,我们正在对此进行改进以允许不定式尝试,但要到本周末才能准备好。

【讨论】:

以上是关于Facebook 即时验证未通过 Facebook 应用验证手机号码的主要内容,如果未能解决你的问题,请参考以下文章

用户对 facebook 进行身份验证后未调用应用程序打开 Url 方法

在 facebook 上显示从 google play store 弹出的即时安装

Facebook 等即时通知

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

如何使用Graph API将Facebook即时游戏领导者设置为上下文

Facebook Graph 不返回电子邮件