xiaomi-passport / oauth-android-sdk Goto Github PK
View Code? Open in Web Editor NEW小米帐号开放平台 Android SDK
小米帐号开放平台 Android SDK
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)
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)
maven { url 'https://raw.githubusercontent.com/xiaomi-passport/maven-repository/master/releases' }
这个https://raw.githubusercontent.com/xiaomi-passport/maven-repository/master/releases 有问题,访问不了。 导致依赖的时候一直卡住。
maven地址404
在MiuiOAuthSession中的mActivity出现内存泄露
另外,为什么小米授权需要Activity对象,我看SDK代码中也只是使用了activity的applicationContext对象
通过sdk中获取accesstoken的方法无法获取到refresh_token
类:ComponentInfo{com.xiaomi.account/com.xiaomi.account.ui.AuthorizeActivity}
报错:
请问你们传入AuthorizeActivity 中的 bundle数据是不是有错?调用intent任何相关的方法都会报错。
现在google play大部分差评都是说不能注册不能登录 注册了没有收到邮件。希望你们能反馈下
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
在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。
使用SDK对设备进行小爱授权,code获取成功后会弹出一个“授权成功”的Toast,这个Toast不是自己代码中弹出的,所以是小米SDK中弹出的,请问有方式去掉吗?
iOS同事说他们那边有Api可以去掉,但是Android的我没找到。
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();
小米电视能用这个sdk吗?
如题
运行 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
集成方式还需要仓库的访问凭证,搞的太麻烦了,无形的给开发者设置了障碍
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)
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)
new XiaomiOAuthorize().setAppId(APP_ID)
appid的长度超出了long型咋办?我们在应用详情里复制出来的appid都超过16位了
看到 iOS SDK 集成后,同个设备安装了米家是可以通过米家登录的账号授权,Android SDK 支持这个特性么,是否需要什么配置
maven { url 'https://gitlab.com/xiaomi-passport/maven-repository/raw/master/releases' } 昨晚回复的, 还是没用。
这周要上线啊。 能不能帮解决下。
刷新令牌(refresh_token)生命周期, 这个是sdk自动的还是手动操作的?没有看到刷新的接口或者demo?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.