【关键字】
Java、认证服务、Twitter统一登录
【介绍】
AGC Auth SDK在传统登录方式基础上新增了Twitter的统一登录方式,开发者可以在应用中集成Twitter认证方式SDK,让您的用户可以使用自己的Twitter帐号进行AppGallery Connect身份验证。下面将快速集成Twitter统一登录SDK实现Twitter认证登录。
【成果展示】
【开发步骤】
集成准备
-
在AGC创建工程并开通认证服务。
- 开启twitter登录的认证方式,并填写准备好的appid和appsecret(Twitter三方认证方式仅在海外站点支持,当您选择数据处理位置为德国、新加坡或俄罗斯时可以使用此认证方式)。
-
在Android Studio中创建一个工程,将agconnect-services.json文件拷贝到项目的app目录下。
-
在项目级build.gradle中配置AGC插件地址。
buildscript { dependencies { //增加Android Gradle插件版本号配置,{version}为实际的Gradle插件版本号,例如7.3.1。 classpath 'com.android.tools.build:gradle:7.3.1' //增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。 classpath 'com.huawei.agconnect:agcp:1.8.1.300' } }
-
在settings.gradle文件中配置华为maven地址。
pluginManagement { repositories { google() mavenCentral() gradlePluginPortal() maven { url 'https://developer.huawei.com/repo/' } } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://developer.huawei.com/repo/' } } }
-
在应用级build.gradle中添加编译依赖和集成SDK
apply plugin: 'com.android.application' apply plugin: 'com.huawei.agconnect' dependencies { … implementation "com.huawei.agconnect:agconnect-core:1.8.1.300" implementation "com.huawei.agconnect:agconnect-auth:1.8.1.300" implementation "com.huawei.agconnect:agconnect-auth-twitter:1.8.1.300" implementation 'net.openid:appauth:0.11.1' }
-
同步工程配置
布局设计
参考如下设置布局,具备Twitter登录和删除用户的功能。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintBottom_toTopOf="@+id/delete"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/anonymous"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/anonymous" />
<Button
android:id="@+id/selfbuild"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/selfbuild" />
<Button
android:id="@+id/phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/phone" />
<Button
android:id="@+id/twitter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/twitter"
android:textAllCaps="false"/>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/delete"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:text="@string/delete_user"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/scrollView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果展示
功能实现
-
在AndroidManifest.xml中配置登录Twitter所需的参数。
<activity android:name=".activity.auth.TwitterActivity" android:exported="true" android:label="@string/twitter" > <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:host="agctwitter123" android:path="/testapp" android:scheme="hjapptest" /> </intent-filter> </activity>
配置Twitter认证所需的appid和appsecret
TwitterAuthConfig authConfig = new TwitterAuthConfig(getString(R.string.twitter_app_id), getString(R.string.twitter_app_secret)); TwitterConfig twitterConfig = new TwitterConfig.Builder(this).twitterAuthConfig(authConfig).build(); Twitter.initialize(twitterConfig); twitterAuthClient = new TwitterAuthClient(); AGConnectApi.getInstance().getOptions().setOption("/twitter/client_id", "WnF5SUFEbTI4U0g0eEtzWlhYZUI6MTpjaQ"); AGConnectApi.getInstance().getOptions().setOption("/twitter/redirect_url", "hjapptest://agctwitter123/testapp");
-
添加生命周期回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); AGConnectApi.getInstance().activityLifecycle().onActivityResult(requestCode, resultCode, data); }
-
调用AGConnectAuth.signIn,登录Twitter帐号
AGConnectAuth.getInstance().signIn(this, AGConnectAuthCredential.Twitter_Provider) .addOnSuccessListener(signInResult -> { Log.i(TAG, "login success"); }).addOnFailureListener(e -> { Log.e(TAG, e.toString()); });
-
登出账号
protected void logout() { auth.signOut(); updateUI(); }
功能测试
在Android Studio运行项目,在测试手机中安装APK
点击“twitter”按钮,使用工程中事先配置好的appid与appsecret登陆成功。
【相关参考】
Twitter认证参考文档:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-android-twitter-0000001053492677
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
标签:Serverless,Twitter,这篇,认证,huawei,com,twitter,agconnect From: https://www.cnblogs.com/developer-huawei/p/17223790.html