Facebook Instant Verification не проверяет номер мобильного телефона через приложение facebook

Привет, я реализую Facebook Instant Verification в своем приложении. В своем приложении я проверяю количество мобильных клиентов, для которых я отправляю OTP, чтобы подтвердить это.

Я хочу изменить подход, поскольку недавно Facebook запустил концепцию Facebook Instant Verification, которая проверяет номер мобильного телефона на основе любого номера, который вы настроили в своей Facebook учетной записи.

https://developers.facebook.com/blog/post/2016/12/20/introduction-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'
}

строки.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();
    }


}

введите здесь описание изображения


person Ajay S    schedule 30.12.2016    source источник


Ответы (1)


Вам нужно добавить хэши ключей Android вашего приложения на их портал для разработчиков, чтобы Instant Verification работал. К сожалению, это не разъясняется в текущих документах Instant Verification (мы работаем над тем, чтобы сделать это более понятным).

Прямо сейчас пара пользователь-приложение может выполнять мгновенную проверку только один раз в час. Мы улучшаем это, чтобы разрешить бесконечные попытки, если вы являетесь администратором или разработчиком приложения, но оно не будет готово до конца недели.

введите здесь описание изображения

person Ajay S    schedule 11.01.2017