快速集成分享
目的:使用shareSDK实现快捷分享。
效果图:
步骤:
官方文档:
ShareSDK for Studio 快速集成
第一步:注册ShareSDK应用获取ShareSDK的appkey
第二步:下载ShareSDK
第三步:利用快速集成工具生成所需要的集成文件
第四步:将生成的文件集成到自己的项目
第五步:配置清单文件
第六步:申请配置第三方平台的key
第七步:初始化ShareSDK
第八步:调用onekeyshare的界面分享
各平台地址及申请流程官方文档
ShareSDK各社交平台申请APPkey 的网址及申请流程汇总
常用开放平台:微博+微信+QQ
常用开放平台申请流程:微博+微信+QQ
Android新浪微博开放平台申请流程
腾讯开放平台申请流程
微信开放平台申请流程
注:
[1] Email、信息不需要注册即可使用
[2] QQ客户端分享和QQ空间使用相同的应用信息配置页面
[3] 微信好友和微信朋友圈使用相同的注册信息
[4] 易信好友和易信朋友圈使用相同的注册信息
注意:
- 初始化ShareSDK最好不要在
Application
中进行,哪里需要分享在哪里初始化,可以进行多次初始化。 - 微博、QQ、QQ空间不需要审核也可以得到
APP ID
App Key
App Secret
,也就是可以分享成功;但是微信不可以,只有审核成功后,才会获得APP ID
App Secret
- 如果提示
“分享失败”
,在log
中搜一下Throwable
或者System.err
,如果是Auth failed
,多半是APP ID
App Key
App Secret
填写错误,或者微博的回调错了(我没写回调分享也成功了)
报错
原因:
解决方法:
在module
的android
节点下添加一下代码
android {
...
defaultConfig {
...
}
buildTypes {
...
}
lintOptions{
checkReleaseBuilds false
abortOnError false
}
}
登陆
前面的配置和分享一样。
点击“QQ登陆”,实现qq登陆
点击“微博登陆”,失败,应该是没有审核通过,无法采用微博登陆,不确定原因。
微信登陆需要审核引用。
效果图
QQ登陆
QQ、微信、微博登陆代码都是一样的,
Platform qq = ShareSDK.getPlatform(QQ.NAME);
qq.SSOSetting(false); //设置false表示使用SSO授权方式
qq.setPlatformActionListener(new PlatformActionListener() { // 设置分享事件回调
@Override
public void onComplete(Platform platform, int action, HashMap<String, Object> hashMap) {
//输出所有授权信息
platform.getDb().exportData();
//遍历Map
Iterator ite = hashMap.entrySet().iterator();
while (ite.hasNext()) {
Map.Entry entry = (Map.Entry) ite.next();
Object key = entry.getKey();
Object value = entry.getValue();
Logger.d("QQ---" + key + ": " + value);
}
Logger.d("hashMap=" + hashMap);
startActivity(new Intent(MainActivity.this, Activity_B.class));
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Logger.d("onError--throwable=" + throwable.getMessage());
}
@Override
public void onCancel(Platform platform, int i) {
Logger.d("onCancel");
}
});
qq.authorize();//单独授权
qq.showUser(null);//授权并获取用户信息
获取平台数据库的用户信息(此方法统一各个第三方平台获取数据信息的接口)
if (action == Platform.ACTION_USER_INFOR) {
PlatformDb platDB = platform.getDb();//获取数平台数据DB
//通过DB获取各种数据
platDB.getToken();
platDB.getUserGender();
platDB.getUserIcon();
platDB.getUserId();
platDB.getUserName();
Logger.d("name=" + platDB.getUserName() + "token=" + platDB.getToken() + "gender=" + platDB.getUserGender() + "userIcon=" + platDB.getUserIcon() + "UserId=" + platDB.getUserId());
}
注意
- QQ登陆需要在QQ互联上面注册,测试的话:走完第一步(资料填写)就可以了;正式的话:应该走完全部的3步吧(没测试)。