如何通过手机或电子邮件认证Android用户
在本教程中,我将展示如何使用Facebook的帐户工具包工具,允许用户使用他们的电话号码或电子邮件登录或注册。你可以在网站上找到完成的项目Github.
创建项目后,请确保将应用程序添加到Facebook的开发者控制台并获得你的应用程序ID.
一旦你的Android Studio项目已经设置好,转到你的项目/ build.gradle
并添加mavenCentral ()
在存储库{}
同时打开你的app / build.gradle
文件并添加Account Kit依赖项:
编译的com.facebook.android: account-kit-sdk: 4.20.0
Android Manifest文件和字符串
在strings.xml
文件,添加以下id:
YOUR_FACEBOOK_APP_ID YOUR_ACCOUNT_KIT_CLIENT_TOKEN akYOUR_FACEBOOK_APP_ID . string name="ACCOUNT_KIT_CLIENT_TOKEN
对象中声明所需的权限、活动和元数据AndroidManifest.xml
:
由于此应用程序需要Internet来执行电话或电子邮件登录,请确保在Manifest文件顶部添加Internet权限。
< uses-permission android: name = " android.permission.INTERNET " / >
为了正确配置我们的应用程序并与Facebook仪表板连接,我们需要添加以下元数据:
<元数据android: name = " com.facebook.accountkit。appationname " android:value="@string/app_name" /> <元数据android:name="com.facebook.sdk。ApplicationId" android:value="@string/facebook_app_id" /> <元数据android:name="com.facebook.accountkit. "ClientToken" android:value="@string/ACCOUNT_KIT_CLIENT_TOKEN" /> <元数据android:name="com.facebook.accountkit. "FacebookAppEventsEnabled“android:价值= " false " / >
在<应用>
标签,我们需要声明电子邮件重定向活动。
<活动android: name = " com.facebook.accountkit.ui。AccountKitEmailRedirectActivity">
这个活动,检测当你点击一个帐户工具包类型的链接或URL放置在电子邮件正文和启动应用程序。当用户确认收到关于使用Account Kit进行电子邮件登录的电子邮件时,就会发生这种情况。
在本教程中,我们将使用一个非常简单的布局。它只包含三个按钮,你可以在下面找到它的代码:
<?XML版本="1.0"编码="utf-8"?> <按钮安卓:layout_width="wrap_content"安卓:layout_height="wrap_content"安卓:onClick="emailLogin"安卓:text="Email Login"安卓:textAllCaps="false"/> <按钮安卓:layout_width="wrap_content"安卓:layout_height="wrap_content"安卓:onClick="phoneLogin"/> <按钮安卓:layout_width="wrap_content"安卓:layout_height="wrap_content"安卓:text="Logout"安卓:textAllCaps="false"android: onClick = "退出" / > < / LinearLayout >
前两个按钮中的每一个都将打开一个新视图,根据情况,电话号码登录类型或电子邮件。第三个按钮清除存储的会话。
通过电子邮件或电话登录
首先,我们声明两个全局变量,如下所示:
APP_REQUEST_CODE = 99;public static final String TAG = "MainActivity";
控件中声明的每个按钮xml
有一个函数作为参数onClick
属性。
所以我们需要一个public void emailLogin(View视图)
方法。
public void emailLogin(@Nullable View视图){final Intent Intent = new Intent(this, AccountKitActivity.class);AccountKitConfiguration。AccountKitConfigurationBuilder configurationBuilder =新的AccountKitConfiguration。AccountKitConfigurationBuilder (LoginType.EMAIL AccountKitActivity.ResponseType.TOKEN);//或. responsetype。CODE UIManager UIManager = new SkinManager(LoginType. log)电子邮件、SkinManager.Skin。经典(Build.VERSION。SDK_INT >= Build.VERSION_CODES。M ?getresource () .getColor (R.color.colorPrimary, null): getresource () .getColor (R.color.colorPrimary)), R.drawable。背景,SkinManager.Tint。黑色,0.55);configurationBuilder.setUIManager (uiManager);intent.putExtra (AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION configurationBuilder.build ()); startActivityForResult(intent, APP_REQUEST_CODE); }
此方法将打开Email Login视图。的@Nullable
注释允许我们调用相同的方法,即使使用零
参数。
它的UI将由UIManager
对象。使用此对象,您可以自定义其皮肤类型、原色、背景图像、色调颜色和色调强度。
要启动电话登录类型活动,只需设置LoginType。电子邮件来LoginType。电话
在Account Kit活动结束后,它将返回一个AccountKit帐户与一个AccessToken同时。要获得此帐户和访问令牌,我们需要覆盖onActivityResult
方法。其代码如下:
@覆盖受保护的无效onActivityResult(最终int requestCode,最终int resultCode,最终意图数据){超级。onActivityResult(requestCode, resultCode, data);if (requestCode == APP_REQUEST_CODE && resultCode == RESULT_OK) {getCurrentAccount();}}
的getCurrentAccount ();
方法:
private void getCurrentAccount(){AccessToken AccessToken = AccountKit.getCurrentAccessToken();if (accessToken != null){//处理返回用户AccountKit. if (accessToken != null) {getCurrentAccount(new AccountKitCallback() {@Override public void onSuccess(final Account Account) {// Get AccountKit ID String accountKitId = Account . getid ();日志。e(“Account KitId”,accountKitId);if(account.getPhoneNumber()!=null){日志。e("CountryCode", "" + account.getPhoneNumber().getCountryCode()));日志。e("PhoneNumber", "" + account.getPhoneNumber().getPhoneNumber()));//获取电话号码PhoneNumber PhoneNumber = account.getPhoneNumber(); String phoneNumberString = phoneNumber.toString(); Log.e("NumberString", phoneNumberString); } if(account.getEmail()!=null) Log.e("Email",account.getEmail()); } @Override public void onError(final AccountKitError error) { // Handle Error Log.e(TAG,error.toString()); } }); } else { //Handle new or logged out user Log.e(TAG,"Logged Out"); } }
如果来自AccountKit Activity的结果是好的,那么我们将有一个AccessToken和一个AccountKit帐户.根据登录类型,我们可以获得用户的电子邮件或电话,甚至两者都有。无论使用哪种登录类型,都以相同的方式获得结果。
要检查用户是否已经使用AccountKit登录,您可以放置getCurrentAccount ()
在onCreate ()
方法,它将检查是否存在一个AccountKit AccessToken。
第三个按钮,将注销当前用户并清除所有保存的访问令牌。其代码如下:
public void logout(@Nullable View视图){AccountKit.logOut();AccessToken AccessToken = AccountKit.getCurrentAccessToken();如果(accessToken ! = null)日志。e(TAG,“仍然登录…”);烤面包。makeText(“注销”,这Toast.LENGTH_SHORT),告诉();}
这些是最重要的方法,要记住,而使用Facebook帐户工具包作为替代登录方法。
结论
Facebook帐户工具包是一个非常方便的工具,一个更简单,更快和无密码的应用程序登录或注册。这是同类服务中最可靠的服务之一。希望你喜欢这篇文章。
如果你有任何问题或意见,请在下面的评论区告诉我。