[android]初识ShareSDK——嵌入和登陆

来源:互联网 发布:国税数据质量整改 编辑:程序博客网 时间:2024/05/20 15:58

ShareSDK可以做什么

ShareSDK是一个第三方分享平台,集成了常用的一些平台分享:例如QQ、微信、新浪微博、腾讯微博、开心网、人人网等等,可以理解为,ShareSDK本身不产生数据,只是提供了这样一个平台。好处是:开发者不必单个再去实现各个网站的分享,可以轻松的实现登陆,分享,获得用户资料,数据统计分析等等。

如何将ShareSDK嵌入到项目中

在Sharesdk平台上注册登录添加应用,下载和安装SDK的安装包

集成sdk到项目中(双击QuickIntegrater启动程序,复制生成的文件到项目中)

修改项目名和包名




把这些文件都替换(复制)到工程里相应的文件夹中。

配置AndroidManifest.xml

添加权限

<uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/><uses-permission android:name="android.permission.GET_ACCOUNTS"/>

添加activity信息


<activity android:name="cn.sharesdk.framework.ShareSDKUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" > <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>

各平台的key去相关开放平台去申请

替换mob后台申请的Appkey与各个平台申请的key


登录


登陆分两种:

要数据不要功能showuser(),要功能不要数据Authorize()。

ShowUser() 登陆,获取个人信息(用户名,昵称等等)(申请key要验证身份证信息)

Authorize()    分享的时候用(不需要自己完成,shareSDK自己判断是否授权,只做分享不需要验证身份证)


登陆需要的四个方法:

1.Platform p = ShareSDK.getPlatform(LoginActivity.this, platformName);
2.p.setPlatformActionListener(PlatformActionListener arg0);
3.ShowUser()要数据不要功能:登录获取个人信息(昵称,性别,头像)(申请key等值必须经过身份证正反面上传验证)如果不获取指定ID,传入null值。

4.authorize()要功能不要数据:分享时使用(不需要自己完成,sharesdk自行判断是否授权只做分享是不需要身份证验证的)
5.这里需要注意一下新浪微博的第三方登陆,是需要限制单点登陆,即加一句:
sinaPlatform.SSOSetting(true);
6.微博的单独分享时回调地址:RedirectUrl="https://api.weibo.com/oauth2/default.html"

然后在回调方法里,可以得到登陆成功,失败,暂停的回调方法:
p.setPlatformActionListener(new PlatformActionListener() {@Overridepublic void onError(Platform arg0, int arg1, Throwable arg2) {Log.e("tag", arg2.getMessage());}@Overridepublic void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {Log.i("tag", "新浪微博的数据库"+arg0.getDb().toString());}@Overridepublic void onCancel(Platform arg0, int arg1) {}});
在登陆成功时,可以看到,可以获取shareSDK给我们提供的数据库,但是各个平台的数据库字段不一样,下面列出了几个获取头像图片和默认头像图片的:
if (plat.getName().equals(SinaWeibo.NAME)) {name = map.get("name").toString();id = map.get("id").toString();url = map.get("avatar_large").toString();} else if (plat.getName().equals(QZone.NAME)) {name = map.get("nickname").toString();id = plat.getDb().getUserId();url = map.get("figureurl_qq_2").toString();} else if (plat.getName().equals(TencentWeibo.NAME)) {name = map.get("nick").toString();id = plat.getDb().getUserId();if (Utils.isEmpty(map.get("head").toString())) {url = "http://mat1.gtimg.com/www/mb/img/p1/head_normal_180.png";} else {url = map.get("head").toString() + "/180";}} else if (plat.getName().equals(Renren.NAME)) {name = map.get("name").toString();id = map.get("id").toString();if (!Utils.isEmpty(map.get("avatar").toString())) {List list = (List) map.get("avatar");for (int i = 0; i < list.size(); i++) {if (!Utils.isEmpty(list.get(i).toString())) {url = ((Map) list.get(2)).get("url").toString();}}


去掉分享界面shareSDK的logo

在分享的时候,分享界面的actionBar会有shareSDK的Logo,若想去掉:
1.参考sdk说明文档,继承一个AuthorizeAdapter的类,然后重写其onCreate方法
 
2.将此类注册到AndroidManifest.xml的ShareSDKUIShell下面


1 0