Coder Social home page Coder Social logo

kaleai / shareloginlib Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lingochamp/shareloginlib

429.0 9.0 64.0 28.85 MB

第三方登录、分享封装库,几行代码即可完成集成,无需配置混淆。

License: MIT License

Java 56.36% HTML 43.64%
sharesdk weixin-sdk weibo-sso-login qqzone

shareloginlib's Issues

已知的第三方SDK的bug(本lib无法解决)

QQ

  1. 开启不保留活动或遇到低内存的设备,第三方平台(如QQ)的文档中已经明确说明会无法收到回调
  2. 分享到给了QQ好友,并且用户留在了QQ,那么就有可能接收不到回调了

微信

  1. 新版本微信中,官方修改了分享的策略,即使是取消分享也会得到分享成功的回调
  2. 分享到了微信,用户留在了微信,那么就有可能接收不到回调了
  3. 如果你手机中安装了微信,并且微信已经登录。直接从你的应用分享到微信是没有任何回调的,只有在你用微信登录你的应用(无论登录是否成功,取消也行)后,才能有回调

微博

  1. 如果没进行微博的登录,直接调用微博分享,有一定概率会出现分享失败

总结

  1. 不能信任第三方的回调,即用户操作后可能会得不到任何回调
  2. 分享途中通过通知消息进入别的app后,可能会因为内存不足等情况,没有回调
  3. 当开启不保留活动后,有可能会出现界面的显示异常,微博、微信尤其明显

If authUserInfo's member variable is null, throw JSONException

UserInfoManager.getQQUserInfo(mContext, accessToken, userId, new UserInfoManager.UserInfoListener() {
            @Override
            public void onSuccess(@NonNull AuthUserInfo authUserInfo) {
                Log.d(TAG, authUserInfo.headImgUrl);
                Log.d(TAG, authUserInfo.nickName);
                Log.d(TAG, authUserInfo.sex);
                Log.d(TAG, authUserInfo.userId);
            }
            @Override
            public void onError(String s) {
                Log.d(TAG, "getUserInfoFromQQ - onError: " + s);
            }
        });

If 'authUserInfo.nickName' is null,

org.json.JSONException: No value for nickname

有些手机闪退

1 java.lang.RuntimeException:Unable to start activity ComponentInfo{com.jixun.router/kale.sharelogin.EventHandlerActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void kale.sharelogin.EventHandlerActivity$OnCreateListener.onCreate(kale.sharelogin.EventHandlerActivity)' on a null object reference

2 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
3 ......
4 Caused by:
5 java.lang.NullPointerException:Attempt to invoke interface method 'void kale.sharelogin.EventHandlerActivity$OnCreateListener.onCreate(kale.sharelogin.EventHandlerActivity)' on a null object reference
6 kale.sharelogin.ShareLoginLib.onActivityCreate(ShareLoginLib.java:180)
7 kale.sharelogin.EventHandlerActivity.onCreate(EventHandlerActivity.java:33)
8 android.app.Activity.performCreate(Activity.java:7183)
9 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
10 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
11 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
12 android.app.ActivityThread.-wrap11(Unknown Source:0)
13 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
14 android.os.Handler.dispatchMessage(Handler.java:105)
15 android.os.Looper.loop(Looper.java:164)
16 android.app.ActivityThread.main(ActivityThread.java:6938)
17 java.lang.reflect.Method.invoke(Native Method)
18 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
19 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

关于qq,微博的scope

您好,我在第三方平台并没有找到相关的scope说明,您能给个链接或者讲解下么

默认icon,和过期时间处理问题

你好,请问一下,第一次登录调到三方登录界面的,默认显示的 icon 怎么是 app 字样的图片。怎么处理过期的问题。

share回调问题

微信朋友圈的ShareListener在取消分享后仍会走onSuccess方法,qq好友以及qq空间在取消分享和分享后都会走onComplete方法而不走onSuccess方法。

关于SlConfig的使用问题

关于这些配置是否有更好的方法来实现?因为在程序初始化时它是作为一个静态变量保存在那里的,占用着内存,可能存在内存泄漏,而且这些配置除了分享的时候其它的情况下都是不需要的

微信分享优化方案建议

通过观察微信官方demo的log可以看到。分享以后点击“回到app”,才会去启动WXEntryActivity(这里我们使用别名所以是EventHandlerActivity),然后触发回到方法。假如我们点击“留在微信”,点返回是不会触发任何回调事件。

而该库采用的策略是先启动一个透明Activity,这样会出现一个问题,分享后留在微信,此时不触发回调,我们的透明Activity不会被销毁。附上我的解决方案(分享测试通过,登录未测试):

ShareLoginLib.java
private static void doAction(...){
  //判断如果是微信平台,则先不启动透明Activity,假如有回调微信会帮我们启动
  if(curPlatform instanceof WechatPlatform){
        curPlatform.doShare(activity,shareType, shareContent, listener);
   }else {
         onCreateListener = new EventHandlerActivity.OnCreateListener() {
         @Override
          public void onCreate(EventHandlerActivity eventActivity) {
               curPlatform.doShare(eventActivity, shareType, shareContent, listener);
               }
          };
          activity.startActivity(new Intent(activity, EventHandlerActivity.class));
          activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    }
    wrPlatform = new WeakReference<>(curPlatform);

}
 static void onActivityCreate(EventHandlerActivity activity) {
        if(onCreateListener != null) { //判空
            onCreateListener.onCreate(activity);
        }
}

log:
屏幕快照 2019-03-22 下午1 10 28

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.