From f832487b2b9fb09302fbfdd12bb16c0aa8b09268 Mon Sep 17 00:00:00 2001 From: big-surprise <59653332+big-surprise@users.noreply.github.com> Date: Tue, 4 Feb 2020 20:46:13 +0800 Subject: [PATCH 1/2] Integrate huawei auth (#1) --- app/HmsDemo.jks | Bin 0 -> 2226 bytes app/agconnect-services.json | 11 + app/build.gradle | 32 ++- .../java/com/jaychang/demo/sa/MainActivity.kt | 18 ++ .../com/jaychang/demo/sa/ProfileActivity.kt | 2 + app/src/main/res/layout/activity_main.xml | 20 ++ app/src/main/res/values/strings.xml | 1 + build.gradle | 3 + .../java/com/jaychang/sa/AuthDataHolder.java | 1 + library-huawei/.gitignore | 68 +++++ library-huawei/LICENSE | 202 +++++++++++++ library-huawei/README.md | 10 + .../Third Party Open Source Notice.docx | Bin 0 -> 45570 bytes library-huawei/build.gradle | 64 +++++ library-huawei/proguard-rules.pro | 21 ++ library-huawei/src/main/AndroidManifest.xml | 33 +++ .../java/com/jaychang/sa/huawei/Constant.java | 38 +++ .../jaychang/sa/huawei/HuaweiIdActivity.java | 192 +++++++++++++ .../com/jaychang/sa/huawei/IDTokenParser.java | 270 ++++++++++++++++++ .../jaychang/sa/huawei/SimpleAuthHuawei.kt | 43 +++ .../jaychang/sa/huawei/common/ICallBack.java | 27 ++ 21 files changed, 1055 insertions(+), 1 deletion(-) create mode 100644 app/HmsDemo.jks create mode 100644 app/agconnect-services.json create mode 100644 library-huawei/.gitignore create mode 100644 library-huawei/LICENSE create mode 100644 library-huawei/README.md create mode 100644 library-huawei/Third Party Open Source Notice.docx create mode 100644 library-huawei/build.gradle create mode 100644 library-huawei/proguard-rules.pro create mode 100644 library-huawei/src/main/AndroidManifest.xml create mode 100644 library-huawei/src/main/java/com/jaychang/sa/huawei/Constant.java create mode 100644 library-huawei/src/main/java/com/jaychang/sa/huawei/HuaweiIdActivity.java create mode 100644 library-huawei/src/main/java/com/jaychang/sa/huawei/IDTokenParser.java create mode 100644 library-huawei/src/main/java/com/jaychang/sa/huawei/SimpleAuthHuawei.kt create mode 100644 library-huawei/src/main/java/com/jaychang/sa/huawei/common/ICallBack.java diff --git a/app/HmsDemo.jks b/app/HmsDemo.jks new file mode 100644 index 0000000000000000000000000000000000000000..ac79e3e2243f211e5151dd54ef6f0b94d4cc85c8 GIT binary patch literal 2226 zcmchY`8U*y8^`Bk7BY4sVJtD0m}W4fk`h_FNYqfucI{iXWNmCIqoHJ98X3OB*op}w zxk6boLIz_Cx44!JA;O(=&$n~#`ThalAD$oHujf4HJllDm{pI~-5D3J@G2kEL_Vf#O zbN372=m2bzoFoVY1<-iN9$Em#dmIKp05vXQ0DyuZc*uflA+OYGyV)AS6^SV5gw{aT zaEe~HZYa)3j3Ltq?U9C8dPbfGTXs_K@_XxBtpkmiZM9#*}UTrs#l7Mo!1dfGWA!Q9RN?S)3N^9vYlyi&Ia&T?)Tio|sjnlcbzI z+co3&1~bQ})UGy={elKMnA>A}il~ZMJ%%eWNbOxT)%g=qDK|x0UC&i0`)SAcd(51^ zcUi({1)1&7eKO7NJ2&fL%BmC`Ia!}!tTsYj|1020Pvz!U$XnWm@^SHw)=!3V$)=L> zO2n{`{l}3}v#jqp`r>DP7Wug6_i(II)h z<|}&bB@=e*_5(e$_sG)Kc#|Uq4aP z6GXe23I@gAraQ$iQYMn0xAUnF7b@3j=rry>>9o_K@4@<1X0z&wN>lf9fP#;2I`%hi zu(hx5D_55h7T~f7GiRc@C$}g%Icby*HL#fnyK9+>4I@QhOgj-X33HxlSG76nNpW%PdppbWWoi3iNu%ply zkopz4W{<$Q*G)<{A6Strqt;|r#-tzRV-cs;Ueq{CO35#f6Lz@cXsDtx^jP$$v-%*Z za`r=PFZE#=56@DH?$@WS^W&LeLQz#?<@Zbun|sqYg`$oGrTZen^=?SjTkVPuWhG7H zH-w50e{7*?zhF!Zkwj(djjt`BR=%m*^~AemIt(Y+Hj8^-n;LJzYmik}VppGq>*i6g zi;hb9`#48(hbH;P{gnV_CTmrt*3D#`+HsN4wj_rP5vJ9-+LY;jP_k96uTcp0GBw}H zEi@5yJR;DW3XLJWtk`_T@C$+*#Ap(qu74{vUBX*Y!CtPOq0asoK~4mRaEroRJ>C7?LVp2XQ5eS`?(X#q!2cJ3e*rW?f*+%Y(bUvN zV>I=&(GC*)+S(XRjP8Hs|0fANpz!bFIj;eX2LwTAJiyC^2LMpdV#)i;M36^QWy;&} zaC)!ud1s+ya#+5Y-Rqh9NA`NyK22>2t%xof&O6B;*!QxK{h}UwW9*!)lGhq?;BaFQ z3ayyCL5~m_DN6U%L^Mw?hrncg2D-=^L4`JMyYIh%4ZcNGOPbp(tMK_j_#FxyGiv#4 zT}X3tAIu6+n#RK5m#jU*ZIYaZMr`?Ze4@poK%Q;%GYb6vGnWJ;Yg8jcYmkoFmXjDl zo$_vuq#1|$MO=rpCQ{Z%)ZnQtloIEyv=(Ntn*9@-I$Zr&5fj6TL^&P84K6r*Hv4A5 zm#~ZpKdGb-a(#P_6n!zyLY((2R=ea=&JegqAxgn2oC^$qfD(DMELw&$a2WxJI7Cbj zFe_LiIBw>yS6{$&l{TbIc8mPGiJT4MG!XzL3LdkMKr^{>X^v&hvOaMK!wBr@t%$TJ zRl0AXTLX$w&x$}y<_|Il@4Bc99c-qggw+Pk_=^h1zb0%ZIc_G-OIy}Rg}x=%h4HXF zEA+2hiEw64&c=pCRr>7=9W;-Fh*EAWj4b18#*m_wJpRJjWV#JKI|VG>%Wtg zz^|$m8w0NQ$F$a~yrIQs89%ApOEscF8LDVg5}Q>*}|b| xH$_jj1`P{>8hH0{|EM``o+DNzX5mg*w+96 literal 0 HcmV?d00001 diff --git a/app/agconnect-services.json b/app/agconnect-services.json new file mode 100644 index 0000000..6ece27f --- /dev/null +++ b/app/agconnect-services.json @@ -0,0 +1,11 @@ +{ + "client":{ + "cp_id":"xxxxxx", + "product_id":"xxxxxx", + "client_id":"xxxxxx", + "client_secret":"xxxxxx", + "app_id":"xxxxxx", + "package_name":"com.jaychang.demo.sa" + }, + "configuration_version":"1.0" +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 89616ff..4db60a6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,8 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'com.huawei.agconnect' + buildscript { repositories { @@ -19,14 +21,38 @@ android { minSdkVersion deps.build.minSdkVersion targetSdkVersion deps.build.targetSdkVersion versionCode 1 + multiDexEnabled true versionName "1.0" } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + signingConfigs { + release { + storeFile file('HmsDemo.jks') + keyAlias 'HmsDemo' + keyPassword 'xxxxxx' + storePassword 'xxxxxx' + v1SigningEnabled true + v2SigningEnabled true + } + } + buildTypes { release { + signingConfig signingConfigs.release minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + signingConfig signingConfigs.release + debuggable true } } + lintOptions { abortOnError false } @@ -51,4 +77,8 @@ dependencies { implementation project(':library-google') implementation project(':library-instagram') implementation project(':library-twitter') + implementation project(':library-huawei') + implementation 'com.huawei.agconnect:agconnect-core:1.0.0.300' + + implementation 'com.android.support:multidex:1.0.1' } diff --git a/app/src/main/java/com/jaychang/demo/sa/MainActivity.kt b/app/src/main/java/com/jaychang/demo/sa/MainActivity.kt index f4d3749..77f2358 100644 --- a/app/src/main/java/com/jaychang/demo/sa/MainActivity.kt +++ b/app/src/main/java/com/jaychang/demo/sa/MainActivity.kt @@ -9,10 +9,12 @@ import com.jaychang.sa.SocialUser import com.jaychang.sa.facebook.SimpleAuth import java.util.* + class MainActivity : AppCompatActivity() { companion object { const val FACEBOOK = "FACEBOOK" + const val HUAWEI = "HUAWEI" const val GOOGLE = "GOOGLE" const val TWITTER = "TWITTER" const val INSTAGRAM = "INSTAGRAM" @@ -41,6 +43,22 @@ class MainActivity : AppCompatActivity() { }) } + fun connectHuawei(view: View) { + com.jaychang.sa.huawei.SimpleAuth.connectHuawei(object : AuthCallback { + override fun onSuccess(socialUser: SocialUser) { + ProfileActivity.start(this@MainActivity, HUAWEI, socialUser) + } + + override fun onError(error: Throwable) { + toast(error.message ?: "") + } + + override fun onCancel() { + toast("Canceled") + } + }) + } + fun connectGoogle(view: View) { val scopes = Arrays.asList( "https://www.googleapis.com/auth/youtube", diff --git a/app/src/main/java/com/jaychang/demo/sa/ProfileActivity.kt b/app/src/main/java/com/jaychang/demo/sa/ProfileActivity.kt index c32a115..4ee0fb6 100644 --- a/app/src/main/java/com/jaychang/demo/sa/ProfileActivity.kt +++ b/app/src/main/java/com/jaychang/demo/sa/ProfileActivity.kt @@ -39,6 +39,7 @@ class ProfileActivity : AppCompatActivity() { fun disconnect(view: View) { when (type) { + MainActivity.HUAWEI -> com.jaychang.sa.huawei.SimpleAuth.disconnectHuawei() MainActivity.FACEBOOK -> SimpleAuth.disconnectFacebook() MainActivity.GOOGLE -> com.jaychang.sa.google.SimpleAuth.disconnectGoogle() MainActivity.TWITTER -> com.jaychang.sa.twitter.SimpleAuth.disconnectTwitter() @@ -49,6 +50,7 @@ class ProfileActivity : AppCompatActivity() { fun revoke(view: View) { when (type) { + MainActivity.HUAWEI -> com.jaychang.sa.huawei.SimpleAuth.revokeHuawei() MainActivity.FACEBOOK -> SimpleAuth.revokeFacebook() MainActivity.GOOGLE -> com.jaychang.sa.google.SimpleAuth.revokeGoogle() MainActivity.TWITTER -> { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index dbeccdb..60ae2a7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -6,6 +6,20 @@ android:background="#555" android:orientation="vertical"> +