Giter Club home page Giter Club logo

oauth-android-sdk's People

Contributors

eggfly avatar linyuan2020 avatar liujun006 avatar moonant avatar shikangkai avatar xiaoyanxia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oauth-android-sdk's Issues

请求授权的时候页面崩溃

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at android.os.BaseBundle.getInt(BaseBundle.java:884)
at android.os.BaseBundle.getInt(BaseBundle.java:866)
at com.xiaomi.account.openauth.XiaomiOAuthResults.getIntCompatibly(XiaomiOAuthResults.java:144)
at com.xiaomi.account.openauth.XiaomiOAuthResults.parseBundle(XiaomiOAuthResults.java:190)
at com.xiaomi.account.openauth.XiaomiOAuthorize$XiaomiTokenFuture.set(XiaomiOAuthorize.java:154)
at com.xiaomi.account.openauth.XiaomiOAuthorize$XiaomiTokenFuture$2.onResult(XiaomiOAuthorize.java:181)
at com.xiaomi.account.XiaomiOAuthResponse.setIXiaomiAuthResponseResult(XiaomiOAuthResponse.java:69)
at com.xiaomi.account.XiaomiOAuthResponse.onResult(XiaomiOAuthResponse.java:37)
at com.xiaomi.account.openauth.AuthorizeActivity.setResultAndFinish(AuthorizeActivity.java:155)
at com.xiaomi.account.openauth.AuthorizeActivity.setResultAndFinish(AuthorizeActivity.java:142)
at com.xiaomi.account.openauth.AuthorizeActivity$AuthorizeWebViewClient.shouldOverrideUrlLoading(AuthorizeActivity.java:293)
at android.webkit.WebViewClient.shouldOverrideUrlLoading(WebViewClient.java:73)
at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:76)
at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:15)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:160)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:9)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6359)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

在vivo手机测试 小米登录 有问题, 其他手机正常。

ava.lang.NullPointerException: Attempt to invoke virtual method 'com.mi.milink.sdk.session.common.ServerProfile com.mi.milink.sdk.session.common.RecentlyServerData.getRecentlyServer()' on a null object reference
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.processEvent(Unknown Source:282)
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.processMessage(Unknown Source:237)
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at com.mi.milink.sdk.base.CustomHandlerThread$1.handleMessage(Unknown Source:2)
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at android.os.Looper.loop(Looper.java:224)
2019-11-06 12:05:06.671 8055-8135/? W/System.err: at android.os.HandlerThread.run(HandlerThread.java:65)

对Activity的引用导致内存泄露

在MiuiOAuthSession中的mActivity出现内存泄露
另外,为什么小米授权需要Activity对象,我看SDK代码中也只是使用了activity的applicationContext对象

有关 com.xiaomi.account.ui.AuthorizeActivity 的错误【紧急】

类:ComponentInfo{com.xiaomi.account/com.xiaomi.account.ui.AuthorizeActivity}

报错:

  1. ClassNotFoundException when unmarshalling: com.xiaomi.account.XiaomiOAuthResponse
  2. Method threw 'java.lang.OutOfMemoryError' exception.

请问你们传入AuthorizeActivity 中的 bundle数据是不是有错?调用intent任何相关的方法都会报错。

androidx error

Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'oauth-android-1.9.1.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform

Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'oauth-android-1.9.1.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform

一处可能导致ClassNotFound的问题

在XiaomiOAuthorize这个类里面的handleIntentResult方法中

        public boolean handleIntentResult(Intent intent) {
            if(intent == null) {
                return false;
            } else {
                Bundle extras = intent.getExtras();
                extras.setClassLoader(this.getClass().getClassLoader());
                if(!extras.containsKey("extra_response")) {
                    intent = AuthorizeActivityBase.asMiddleActivity(this.mActivity, intent, this.wrapWithinResponse(), this.mAuthorizeActivityClazz);
                }

                this.mActivity.startActivity(intent);
                return true;
            }
        }

给extras设置classloader,但是这个extras并不是intent里的mExtras这个成员变量,而是在intent.getExtras()这个方法执行的时候new出来的一个新的Bundle,也就是说extras只是一个局部变量,不会影响到Intent里的mExtras这个成员变量,因此给extras设置的classloader并没有实际效果。

这个地方如果要设置classloader,需要调用intent的setExtrasClassLoader方法,这个方法会给mExtras设置Classloader。

如何关闭“授权成功”的Toast提示

使用SDK对设备进行小爱授权,code获取成功后会弹出一个“授权成功”的Toast,这个Toast不是自己代码中弹出的,所以是小米SDK中弹出的,请问有方式去掉吗?
iOS同事说他们那边有Api可以去掉,但是Android的我没找到。

关闭了授权界面,取消OperationCanceledException没有抛出,一直卡在 String result = future.getResult();

future = new XiaomiOAuthorize()
.setAppId(APP_ID)
.setRedirectUrl(mRedirectUri)// 开发者预先申请时填好的 redirectUrl
.setScope(getScope())// int数组,可以用XiaomiOAuthConstants.SCOPE_*等常量
.setKeepCookies(false) // 不调的话默认是false
//.setNoMiui(isMiui) // 不调的话默认是false
.setSkipConfirm(false) // 不调的话默认是false
.setCustomizedAuthorizeActivityClass(CustomizedAuthorizedActivity.class)// 设置自定义的非miui上登录界面(默认是AuthorizeActivity)
.startGetAccessToken(mActivity);

//Must call on the background thread
try {
String result = future.getResult();
} catch (IOException e1) {
// error
} catch (OperationCanceledException e1) {
// error
} catch (XMAuthericationException e1) {
// error
}

点击界面上的取消按钮,关闭了授权界面,取消OperationCanceledException没有抛出,一直卡在 String result = future.getResult();

image

类 XiaomiOAuthResponse 找不到异常

运行 Demo 时,看到日志中出现以下异常语句,不知是否对用户使用有影响?

E/Parcel: Class not found when unmarshalling: com.xiaomi.account.XiaomiOAuthResponse
                                        java.lang.ClassNotFoundException: com.xiaomi.account.XiaomiOAuthResponse
                                            at java.lang.Class.classForName(Native Method)
                                            at java.lang.Class.forName(Class.java:308)
                                            at java.lang.Class.forName(Class.java:272)
                                            at android.os.Parcel.readParcelableCreator(Parcel.java:2275)
                                            at android.os.Parcel.readParcelable(Parcel.java:2239)
                                            at android.os.Parcel.readValue(Parcel.java:2146)
                                            at android.os.Parcel.readArrayMapInternal(Parcel.java:2479)
                                            at android.os.BaseBundle.unparcel(BaseBundle.java:221)
                                            at android.os.Bundle.getBundle(Bundle.java:782)
                                            at android.content.Intent.getBundleExtra(Intent.java:5083)
                                            at com.android.server.am.ActivityStackInjector.getStartingWindowLabel(ActivityStackInjector.java:99)
                                            at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:2138)
                                            at com.android.server.am.ActivityStackSupervisor.startActivityUncheckedLocked(ActivityStackSupervisor.java:2269)
                                            at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1582)
                                            at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:984)
                                            at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3617)
                                            at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3604)
                                            at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140)
                                            at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2419)
                                            at android.os.Binder.execTransact(Binder.java:446)
                                         Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xiaomi.account.XiaomiOAuthResponse" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
                                            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                            at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                            at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                            at java.lang.Class.classForName(Native Method) 
                                            at java.lang.Class.forName(Class.java:308) 
                                            at java.lang.Class.forName(Class.java:272) 
                                            at android.os.Parcel.readParcelableCreator(Parcel.java:2275) 
                                            at android.os.Parcel.readParcelable(Parcel.java:2239) 
                                            at android.os.Parcel.readValue(Parcel.java:2146) 
                                            at android.os.Parcel.readArrayMapInternal(Parcel.java:2479) 
                                            at android.os.BaseBundle.unparcel(BaseBundle.java:221) 
                                            at android.os.Bundle.getBundle(Bundle.java:782) 
                                            at android.content.Intent.getBundleExtra(Intent.java:5083) 
                                            at com.android.server.am.ActivityStackInjector.getStartingWindowLabel(ActivityStackInjector.java:99) 
                                            at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:2138) 
                                            at com.android.server.am.ActivityStackSupervisor.startActivityUncheckedLocked(ActivityStackSupervisor.java:2269) 
                                            at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:1582) 
                                            at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:984) 
                                            at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3617) 
                                            at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3604) 
                                            at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) 
                                            at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2419) 
                                            at android.os.Binder.execTransact(Binder.java:446) 
                                        	Suppressed: java.lang.ClassNotFoundException: com.xiaomi.account.XiaomiOAuthResponse
                                            at java.lang.Class.classForName(Native Method)
                                            at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                            at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                            at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                            		... 21 more
                                         Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

在华为手机测试小米登录 也有问题! 在小米手机,oppo 手机,模拟器上测试正常。

E/zygote64: No implementation found for void com.mi.milink.sdk.connection.ConnectionImpl.native_init() (tried Java_com_mi_milink_sdk_connection_ConnectionImpl_native_1init and Java_com_mi_milink_sdk_connection_ConnectionImpl_native_1init__)
2019-11-06 12:19:41.180 8495-8779/? E/ConnectionImpl(MiLinkSDK)(misdk): SessionManagerForSimpleChannel_=>System.loadLibrary failed
java.lang.UnsatisfiedLinkError: No implementation found for void com.mi.milink.sdk.connection.ConnectionImpl.native_init() (tried Java_com_mi_milink_sdk_connection_ConnectionImpl_native_1init and Java_com_mi_milink_sdk_connection_ConnectionImpl_native_1init__)
at com.mi.milink.sdk.connection.ConnectionImpl.native_init(Native Method)
at com.mi.milink.sdk.connection.ConnectionImpl.(Unknown Source:35)
at com.mi.milink.sdk.session.simplechannel.SessionForSimpleChannel.openSession(Unknown Source:124)
at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.internalOpen(Unknown Source:150)
at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.internalManualOpen(Unknown Source:24)
at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.login(Unknown Source:79)
at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.processEvent(Unknown Source:66)
at com.mi.milink.sdk.session.simplechannel.SessionManagerForSimpleChannel.processMessage(Unknown Source:205)
at com.mi.milink.sdk.base.CustomHandlerThread$1.handleMessage(Unknown Source:2)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.os.HandlerThread.run(HandlerThread.java:65)

Got NumberFormatException when login just finished

W/XiaomiOAuthResults: error, return 0 instead:
java.lang.NumberFormatException: Invalid int: "null"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.xiaomi.account.openauth.XiaomiOAuthResults.getIntCompatibly(XiaomiOAuthResults.java:149)
at com.xiaomi.account.openauth.XiaomiOAuthResults.parseBundle(XiaomiOAuthResults.java:199)
at com.xiaomi.account.openauth.XiaomiOAuthorize$XiaomiTokenFuture.set(XiaomiOAuthorize.java:198)
at com.xiaomi.account.openauth.XiaomiOAuthorize$XiaomiTokenFuture$2.onResult(XiaomiOAuthorize.java:232)
at com.xiaomi.account.XiaomiOAuthResponse.setIXiaomiAuthResponseResult(XiaomiOAuthResponse.java:69)
at com.xiaomi.account.XiaomiOAuthResponse.onResult(XiaomiOAuthResponse.java:37)
at com.xiaomi.account.openauth.AuthorizeActivityBase.setResultAndFinish(AuthorizeActivityBase.java:164)
at com.xiaomi.account.openauth.AuthorizeActivityBase.setResultAndFinish(AuthorizeActivityBase.java:151)
at com.xiaomi.account.openauth.AuthorizeActivityBase$AuthorizeWebViewClient.shouldOverrideUrlLoading(AuthorizeActivityBase.java:358)
at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:342)
at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:168)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:256)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7230)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

appid类型错误

new XiaomiOAuthorize().setAppId(APP_ID)
appid的长度超出了long型咋办?我们在应用详情里复制出来的appid都超过16位了

Android 是否可以支持米家登录

看到 iOS SDK 集成后,同个设备安装了米家是可以通过米家登录的账号授权,Android SDK 支持这个特性么,是否需要什么配置

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.