剑客
关注科技互联网

ShareLoginLib

ShareLoginLib likes simple sharesdk or umeng in China . It is a tool to help developers to share their content (image , text or music ) to WeChat,Weibo and QQ.

ShareLoginLib

示例

ShareLoginLib
ShareLoginLib
ShareLoginLib

如何使用

登录、分享

// 登录
LoginManager.login(this, LoginType.WeiBo,WeiXin,QQ】, new LoginManager.LoginListener() {

      public void onSuccess(String accessToken, String uId, long expiresIn, @Nullable String wholeData) {}

      public void onError(String msg) {}

      public void onCancel() {}
  });


// 分享
ShareManager.share(MainActivity.thisShareType.【xxxx】
        new ShareContentWebpage("title", "hello world!", "http://www.baidu.com", mBitmap),
        new ShareManager.ShareStateListener() {

                  public void onSuccess() {}

                  public void onCancel() {}

                  public void onError(String msg) {}
              });

判断是否已安装第三方客户端

ShareBlock.isWeiXinInstalled(this);
ShareBlock.isWeiBoInstalled(this);
ShareBlock.isQQInstalled(this);

通过token和id得到用户信息

UserInfoManager.getUserInfo(context, LoginType.WeiBo,WeiXin,QQ】, accessToken, userId,
    new UserInfoManager.UserInfoListener() {

        public void onSuccess(@NonNull AuthUserInfo userInfo) {
            // 可以得到:昵称,性别,头像url,用户id
        }

        public void onError(String msg) {
        }
    });

更多详细的操作请参考项目的demo。

配置工作

因为本项目需要签名和第三方认证,所以使用者要在第三方(qq/weibo/weixin)网站进行注册后才可测试。 本库作者是不会提供任何和签名、密码、AppId等有关信息的。

注意:第三方的登录和分享功能均需要在 已签名
的app中进行测试

1. 添加混淆参数

# ———————— 微信 ————————
-keep class com.tencent.mm.sdk.** { *;}

# ———————— 微博 ————————   
-keep class com.sina.weibo.sdk.api.* { *; }

# ———————— QQ ————————
-keep class com.tencent.open.TDialog$*
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}

2. 在主包名下新建wxapi这个包,然后放入WXEntryActivity

Activity的写法如下:

package 你自己的包名.wxapi;
import com.liulishuo.share.weixin.WeiXinHandlerActivity;

/**
 * -----------------------------------------------------------------------
 * 这是微信客户端回调activity.
 * 必须在项目包名下的wxapi中定义,类名也不能改。奇葩到一定境界了!
 * eg:com.kale.share是你的项目包名,那么这个类一定要放在com.kale.share.wxapi中才行。
 * 而且千万不要更改类名,请保持WXEntryActivity不变
 * WTF:真是微信蠢到家的设计,太愚蠢了
 * -----------------------------------------------------------------------
 */
public class WXEntryActivity extends WeiXinHandlerActivity {}

3. 在build.gradle中配置QQ的key

defaultConfig {
    applicationId "xxx.xxx.xxx" // 换成你的包名
    minSdkVersion 15
    targetSdkVersion 23

    manifestPlaceholders = [
            // 这里换成:tencent+你的AppId
            "tencentAuthId": "tencent123456",
    ]
}

4. 在gradle.properties中配置常量

这里分两种情况:

1.如果你要运行该项目给出的demo,那么请先在本地建立一个 gradle.properties
文件,然后配置下下列必要的信息

STORE_FILE_PATH xxxxx
STORE_PASSWORD xxxxx
KEY_ALIAS xxxxx
KEY_PASSWORD xxxxx
TENCENT_AUTHID tencent206120

2.如果你是在自己项目中通过gradle依赖了本库,只需要保证可签名即可

signingConfigs {
    release {
        // 这里换成你自己的签名等信息
        storeFile file(STORE_FILE_PATH)
        storePassword STORE_PASSWORD
        keyAlias KEY_ALIAS
        keyPassword KEY_PASSWORD
    }
}

最后运行签名后的apk。

5. 在使用功能前进行注册

Config config = Config.getInstance()
            .debug(true)
            .appName("Test App")
            .picTempFile(this)
            .qq(QQ_APPID, QQ_SCOPE)
            .weiXin(WEIXIN_APPID, WEIXIN_SECRET)
            .weiBo(WEIBO_APPID, WEIBO_REDIRECT_URL, WEIBO_SCOPE);

ShareBlock.init(config);

测试环境

  1. 开启不保留活动
  2. 未安装第三方应用
  3. 安装第三方应用,但第三方应用未登录
  4. 未开启不保留活动,并且第三方应用已经登录

目前需要在上述四种不同的环境中执行项目的测试用例,以保证整个项目的健壮性。

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

  • 首先不能信任第三方的回调,比如你分享到了微信,然后用户停在了微信,那么你就永远接收不到回调了。停留在他们的app一阵后,可能会因为内存不足等奇葩情况,你的应用被杀死。死了后怎么接收回调?
  • 如果你手机中安装了微信,并且微信已经登录。直接从你的应用分享到微信是没有任何回调的,只有在你用微信登录你的应用(无论登录是否成功,取消也行)后,才能有回调。
  • 当开启不保留活动后,有可能会出现界面的显示异常,这个和第三方的应用有密切关系,微博尤其明显。

LICENCE

The MIT License (MIT)

Copyright (c) 2015 LingoChamp Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址