如何通过手机或电子邮件认证Android用户

    Theodhor Pandeli
    分享

    在本教程中,我将展示如何使用Facebook的帐户工具包工具,允许用户使用他们的电话号码或电子邮件登录或注册。你可以在网站上找到完成的项目Github

    AccountKit活动

    创建项目后,请确保将应用程序添加到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帐户工具包是一个非常方便的工具,一个更简单,更快和无密码的应用程序登录或注册。这是同类服务中最可靠的服务之一。希望你喜欢这篇文章。

    如果你有任何问题或意见,请在下面的评论区告诉我。

    Baidu