gpt4 book ai didi

android - Facebook 即时验证未通过 Facebook 应用程序验证手机号码

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:03:08 24 4
gpt4 key购买 nike

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

我想改变方法,因为最近 Facebook 推出了一个概念 Facebook 即时验证,它根据您在 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'
}

字符串.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>

主 Activity .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();
}


}

enter image description here

最佳答案

您需要在他们的开发者门户网站上添加您应用的 Android key 哈希,即时验证才能正常工作。不幸的是,这在当前的即时验证文档中并不清楚(我们正在努力使这一点更清楚)。

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

enter image description here

关于android - Facebook 即时验证未通过 Facebook 应用程序验证手机号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41392041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com