android 第三方平台登录与分享(基于Share SDK)



借助Share SDK开发:

1、获取Share SDKappKey

a、在Share SDK官网注册

注册后创建应用,创建成功后就会获得Share SDK分配的appKey 和 App Secret

 


 

2、在我们的项目中注册开发者的信息


<?xml version="1.0" encoding="utf-8"?>

<DevInfor>    

<!--说明:        

1、表格中的第一项    

<ShareSDK AppKey="api20" />是必须的,其中的AppKey是你在Share SDK上注册的开发者帐号的AppKey         

2、所有集成到你项目的平台都应该为其在表格中填写相对应的开发者信息,

以新浪微博为例:         

<SinaWeibo                

SortId="此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大越靠后"                

AppKey="填写你在新浪微博上注册的AppKey"                

AppSecret="填写你在新浪微博上注册到的AppKey"                

Id="自定义字段,整形,用于你项目中对此平台的识别符"                

RedirectUrl="填写你在新浪微博上注册的RedirectUrl" />               

各个平台注册应用信息的地址如下:     

新浪微博:http://open.weibo.com

 腾讯微博:http://dev.t.qq.com

 QQ空间:http://connect.qq.com/intro/login/

 网易微博:http://open.t.163.com

 搜狐微博:http://open.t.sohu.com

 豆瓣:http://developers.douban.com

 人人网:http://dev.renren.com

 开心网:http://open.kaixin001.com Instapaper:http://www.instapaper.com/main/request_oauth_consumer_token

 有道云笔记:http://note.youdao.com/open/developguide.html#app facebook:https://developers.facebook.com twitter:https://dev.twitter.com

搜狐随身看:https://open.sohu.com

QQ好友分享:http://mobile.qq.com/api/

微信:http://open.weixin.qq.com-->       

<ShareSDK         AppKey = "api20"/> 

<!-- AppKey="104972cdd48" "23a9371d3a8"-->        

<SinaWeibo        

SortId="1"        

AppKey="3201194191"        

AppSecret="0334252914651e8f76bad63337b3b78f"        

Id="1"        

RedirectUrl="http://appgo.cn" />     

<TencentWeibo        

SortId="2"        

AppKey="801307650"        

AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c"        

RedirectUri="http://sharesdk.cn"        

Id="2" />     

<QZone        

SortId="3"        

AppId="100371282"       

AppKey="aed9b0303e3ed1e27bae87c33761161d"        

Id="3"        

RedirectUrl="http://www.shareSDK.cn" />           

<Renren        

SortId="4"        

AppId="226427"        

ApiKey="fc5b8aed373c4c27a05b712acba0f8c3"        

Id="4"        

SecretKey="f29df781abdd4f49beca5a2194676ca4" />         

</DevInfor>

 

 

 

 

3、mainfest注册第三方平台登录与分享的activity

登录:

 <!--

 为了授权操作可以顺利完成,需要在application下注册下面的Activity

  AuthorizeActivity的路径是固定的,一定要在“cn.sharesdk.framework”下,因为他在Share-Core包中

-->

<activity            

android:name="cn.sharesdk.framework.AuthorizeActivity"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"            

android:windowSoftInputMode="stateHidden|adjustResize" >

</activity>

分享:

<!-- 

快捷分享是ShareSDK提供的一套基于其接口的GUI。通过简单的配置,可以在不考虑平台的情况下,调用很少的代码,就完成分享的操作。快捷分享的jar包放在SDK解压目录的"Libs\ShareSDK-GUI"中,叫做"cn.sharesdk.oneshare.jar"。快捷分享使用了两个Activity,需要在AndroidManifest.xml中注册这两个Activity:

-->

<activity

android:name="cn.sharesdk.onekeyshare.ShareAllGird"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:windowSoftInputMode="adjustPan|stateHidden" />

<activity

android:name="cn.sharesdk.onekeyshare.SharePage"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"            

android:windowSoftInputMode="stateHidden|adjustResize" />

接着要导入ShareSDK和对应第三平台的SDK,导入libs

 

 

 

 

 

 

 

 

现在就可以开始编写程序代码了,在编写程序之前记得在oncreat里面得先调用

AbstractWeibo.initSDK(this);

初始化Share SDK

当程序被摧毁的时候,应该释放Share SDK的资源

protected void onDestroy() {

AbstractWeibo.stopSDK(this);

super.onDestroy();

} 

 

第三方登录功能

Share SDK 将很多第三平台集成在一起,然后每个平台都有自己平台的名字,并用枚举类型封装在一起,比如要用新浪微博的名字,就可以这样 :

SinaWeibo.NAME,

这个是方便后面注册平台时,要传入该平台的名字,如下

AbstractWeibo.getWeibo(thisname) 注册第三平台,name为平台的名称

该方法返回的是一个AbstractWeibo,也就是对应您注册的一个平台,接下来就可以对这个平台进行一些操作。

AbstractWeibo还有一个方法是AbstractWeibo.getWeiboList(Context context),该方法是获取已经注册到SDK的平台实例列表 此方法第一次调用会比较耗时,建议在子线程中调用

 

 

 

上面一步是注册平台,但是注册未必成功,比如您为申请成为该平台的开发者,也就是未获得该平台appkey等一些信息,这是注册就失败了,还有取消注册的一种情况,所以必须对注册这一个动作进行监听,Share SDK有专门的一个监听接口WeiboActionListener,继承该接口,有三个必须实现的抽象方法,也就是我所说的注册成功、失败、取消时回调的方法,注意,别忘记为平台添加监听weibo.setWeiboActionListener(this);

/**

 * 授权成功的回调

 *  weibo - 回调的平台

 *action - 操作的类型

 *res - 请求的数据通过res返回

 */

@Override

public void onComplete(AbstractWeibo weiboint action,HashMap<String, Object> res) {

Message msg = new Message();

msg.arg1 = 1;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

 

/**

 * 授权失败的回调

 */

@Override

public void onError(AbstractWeibo weiboint action, Throwable t) {

t.printStackTrace();

Message msg = new Message();

msg.arg1 = 2;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

/**

 * 取消授权的回调

 */

@Override

public void onCancel(AbstractWeibo weiboint action) {

Message msg = new Message();

msg.arg1 = 3;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

 

接着要对注册结果进行判断和执行相应的一些操作,上面是以消息的形式发送请求结果,所以直接对这个消息进行处理就ok

比如在成功的时候,你想拿到您所注册平台账号的名字,

就可以调用AbstractWeibo.getDb().get(“nikname”);

getDb()是获取平台的数据库

 

 


 

分享功能:

首先就是注册分享界面的activity,上文已经提到了,这里不再解释。

 

Share SDK的快捷分享图文其实很简单,用起来很方便,但是这个分析的界面是不是您想要的,这另当别论。Share SDK实现了分享的功能

您只要写一个方法,在方法里面intent里跳到ShareAllGird.classokShareAllGird.classShare SDK写好的一个activity,上文我们也注册过这个activity,而你想要分享的数据就可以放进这个intent里面了。当你要分享时调用这个方法就可以了

/**

使用快捷分享完成图文分享

*/

private void showGrid(boolean silent) {

Intent i = new Intent(this, ShareAllGird.class);

// 分享时Notification的图标

i.putExtra("notif_icon", R.drawable.ic_launcher);

// 分享时Notification的标题

i.putExtra("notif_title", this.getString(R.string.app_name));

// title标题,在印象笔记、邮箱、信息、微信(包括好友和朋友圈)、人人网和QQ空间使用,否则可以不提供

i.putExtra("title", this.getString(R.string.share));

// titleUrl是标题的网络链接,仅在人人网和QQ空间使用,否则可以不提供

i.putExtra("titleUrl", "http://sharesdk.cn");

// text是分享文本,所有平台都需要这个字段

i.putExtra("text", this.getString(R.string.share_content));

// imagePath是本地的图片路径,所有平台都支持这个字段,不提供,则表示不分享图片

i.putExtra("imagePath", MainActivity.TEST_IMAGE);

// url仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("url", "http://sharesdk.cn");

// thumbPath是缩略图的本地路径,仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("thumbPath", MainActivity.TEST_IMAGE);

// appPath是待分享应用程序的本地路劲,仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("appPath", MainActivity.TEST_IMAGE);

// comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供

i.putExtra("comment", this.getString(R.string.share));

// site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供

i.putExtra("site", this.getString(R.string.app_name));

// siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供

i.putExtra("siteUrl", "http://sharesdk.cn");

// 是否直接分享

i.putExtra("silent", silent);

this.startActivity(i);}

本文在两个平台做了测试,新浪微博和腾讯QQ,微信平台好像要开发者资质认证,而且要一定的费用的。想对Share SDK想了解深入一点或具体一点可看博文http://www.apkbus.com/android-125666-1-1.html,本人也是基于此对Share SDK进一步了解的。

本人对Share SDK的分享界面也不喜欢,我想要的是像一般应用那样的分享效果,现在还在研究,希望大家多多指导。

本人是android的初学者,有什么不好的地方,望大家多多赐教,不胜感激!

 


借助Share SDK开发:

1、获取Share SDKappKey

a、在Share SDK官网注册

注册后创建应用,创建成功后就会获得Share SDK分配的appKey 和 App Secret

 


 

2、在我们的项目中注册开发者的信息


<?xml version="1.0" encoding="utf-8"?>

<DevInfor>    

<!--说明:        

1、表格中的第一项    

<ShareSDK AppKey="api20" />是必须的,其中的AppKey是你在Share SDK上注册的开发者帐号的AppKey         

2、所有集成到你项目的平台都应该为其在表格中填写相对应的开发者信息,

以新浪微博为例:         

<SinaWeibo                

SortId="此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大越靠后"                

AppKey="填写你在新浪微博上注册的AppKey"                

AppSecret="填写你在新浪微博上注册到的AppKey"                

Id="自定义字段,整形,用于你项目中对此平台的识别符"                

RedirectUrl="填写你在新浪微博上注册的RedirectUrl" />               

各个平台注册应用信息的地址如下:     

新浪微博:http://open.weibo.com

 腾讯微博:http://dev.t.qq.com

 QQ空间:http://connect.qq.com/intro/login/

 网易微博:http://open.t.163.com

 搜狐微博:http://open.t.sohu.com

 豆瓣:http://developers.douban.com

 人人网:http://dev.renren.com

 开心网:http://open.kaixin001.com Instapaper:http://www.instapaper.com/main/request_oauth_consumer_token

 有道云笔记:http://note.youdao.com/open/developguide.html#app facebook:https://developers.facebook.com twitter:https://dev.twitter.com

搜狐随身看:https://open.sohu.com

QQ好友分享:http://mobile.qq.com/api/

微信:http://open.weixin.qq.com-->       

<ShareSDK         AppKey = "api20"/> 

<!-- AppKey="104972cdd48" "23a9371d3a8"-->        

<SinaWeibo        

SortId="1"        

AppKey="3201194191"        

AppSecret="0334252914651e8f76bad63337b3b78f"        

Id="1"        

RedirectUrl="http://appgo.cn" />     

<TencentWeibo        

SortId="2"        

AppKey="801307650"        

AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c"        

RedirectUri="http://sharesdk.cn"        

Id="2" />     

<QZone        

SortId="3"        

AppId="100371282"       

AppKey="aed9b0303e3ed1e27bae87c33761161d"        

Id="3"        

RedirectUrl="http://www.shareSDK.cn" />           

<Renren        

SortId="4"        

AppId="226427"        

ApiKey="fc5b8aed373c4c27a05b712acba0f8c3"        

Id="4"        

SecretKey="f29df781abdd4f49beca5a2194676ca4" />         

</DevInfor>

 

 

 

 

3、mainfest注册第三方平台登录与分享的activity

登录:

 <!--

 为了授权操作可以顺利完成,需要在application下注册下面的Activity

  AuthorizeActivity的路径是固定的,一定要在“cn.sharesdk.framework”下,因为他在Share-Core包中

-->

<activity            

android:name="cn.sharesdk.framework.AuthorizeActivity"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"            

android:windowSoftInputMode="stateHidden|adjustResize" >

</activity>

分享:

<!-- 

快捷分享是ShareSDK提供的一套基于其接口的GUI。通过简单的配置,可以在不考虑平台的情况下,调用很少的代码,就完成分享的操作。快捷分享的jar包放在SDK解压目录的"Libs\ShareSDK-GUI"中,叫做"cn.sharesdk.oneshare.jar"。快捷分享使用了两个Activity,需要在AndroidManifest.xml中注册这两个Activity:

-->

<activity

android:name="cn.sharesdk.onekeyshare.ShareAllGird"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:windowSoftInputMode="adjustPan|stateHidden" />

<activity

android:name="cn.sharesdk.onekeyshare.SharePage"

android:configChanges="keyboardHidden|orientation"

android:screenOrientation="portrait"            

android:theme="@android:style/Theme.Translucent.NoTitleBar"            

android:windowSoftInputMode="stateHidden|adjustResize" />

接着要导入ShareSDK和对应第三平台的SDK,导入libs

 

 

 

 

 

 

 

 

现在就可以开始编写程序代码了,在编写程序之前记得在oncreat里面得先调用

AbstractWeibo.initSDK(this);

初始化Share SDK

当程序被摧毁的时候,应该释放Share SDK的资源

protected void onDestroy() {

AbstractWeibo.stopSDK(this);

super.onDestroy();

} 

 

第三方登录功能

Share SDK 将很多第三平台集成在一起,然后每个平台都有自己平台的名字,并用枚举类型封装在一起,比如要用新浪微博的名字,就可以这样 :

SinaWeibo.NAME,

这个是方便后面注册平台时,要传入该平台的名字,如下

AbstractWeibo.getWeibo(thisname) 注册第三平台,name为平台的名称

该方法返回的是一个AbstractWeibo,也就是对应您注册的一个平台,接下来就可以对这个平台进行一些操作。

AbstractWeibo还有一个方法是AbstractWeibo.getWeiboList(Context context),该方法是获取已经注册到SDK的平台实例列表 此方法第一次调用会比较耗时,建议在子线程中调用

 

 

 

上面一步是注册平台,但是注册未必成功,比如您为申请成为该平台的开发者,也就是未获得该平台appkey等一些信息,这是注册就失败了,还有取消注册的一种情况,所以必须对注册这一个动作进行监听,Share SDK有专门的一个监听接口WeiboActionListener,继承该接口,有三个必须实现的抽象方法,也就是我所说的注册成功、失败、取消时回调的方法,注意,别忘记为平台添加监听weibo.setWeiboActionListener(this);

/**

 * 授权成功的回调

 *  weibo - 回调的平台

 *action - 操作的类型

 *res - 请求的数据通过res返回

 */

@Override

public void onComplete(AbstractWeibo weiboint action,HashMap<String, Object> res) {

Message msg = new Message();

msg.arg1 = 1;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

 

/**

 * 授权失败的回调

 */

@Override

public void onError(AbstractWeibo weiboint action, Throwable t) {

t.printStackTrace();

Message msg = new Message();

msg.arg1 = 2;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

/**

 * 取消授权的回调

 */

@Override

public void onCancel(AbstractWeibo weiboint action) {

Message msg = new Message();

msg.arg1 = 3;

msg.arg2 = action;

msg.obj = weibo;

handler.sendMessage(msg);

}

 

接着要对注册结果进行判断和执行相应的一些操作,上面是以消息的形式发送请求结果,所以直接对这个消息进行处理就ok

比如在成功的时候,你想拿到您所注册平台账号的名字,

就可以调用AbstractWeibo.getDb().get(“nikname”);

getDb()是获取平台的数据库

 

 


 

分享功能:

首先就是注册分享界面的activity,上文已经提到了,这里不再解释。

 

Share SDK的快捷分享图文其实很简单,用起来很方便,但是这个分析的界面是不是您想要的,这另当别论。Share SDK实现了分享的功能

您只要写一个方法,在方法里面intent里跳到ShareAllGird.classokShareAllGird.classShare SDK写好的一个activity,上文我们也注册过这个activity,而你想要分享的数据就可以放进这个intent里面了。当你要分享时调用这个方法就可以了

/**

使用快捷分享完成图文分享

*/

private void showGrid(boolean silent) {

Intent i = new Intent(this, ShareAllGird.class);

// 分享时Notification的图标

i.putExtra("notif_icon", R.drawable.ic_launcher);

// 分享时Notification的标题

i.putExtra("notif_title", this.getString(R.string.app_name));

// title标题,在印象笔记、邮箱、信息、微信(包括好友和朋友圈)、人人网和QQ空间使用,否则可以不提供

i.putExtra("title", this.getString(R.string.share));

// titleUrl是标题的网络链接,仅在人人网和QQ空间使用,否则可以不提供

i.putExtra("titleUrl", "http://sharesdk.cn");

// text是分享文本,所有平台都需要这个字段

i.putExtra("text", this.getString(R.string.share_content));

// imagePath是本地的图片路径,所有平台都支持这个字段,不提供,则表示不分享图片

i.putExtra("imagePath", MainActivity.TEST_IMAGE);

// url仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("url", "http://sharesdk.cn");

// thumbPath是缩略图的本地路径,仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("thumbPath", MainActivity.TEST_IMAGE);

// appPath是待分享应用程序的本地路劲,仅在微信(包括好友和朋友圈)中使用,否则可以不提供

i.putExtra("appPath", MainActivity.TEST_IMAGE);

// comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供

i.putExtra("comment", this.getString(R.string.share));

// site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供

i.putExtra("site", this.getString(R.string.app_name));

// siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供

i.putExtra("siteUrl", "http://sharesdk.cn");

// 是否直接分享

i.putExtra("silent", silent);

this.startActivity(i);}

本文在两个平台做了测试,新浪微博和腾讯QQ,微信平台好像要开发者资质认证,而且要一定的费用的。想对Share SDK想了解深入一点或具体一点可看博文http://www.apkbus.com/android-125666-1-1.html,本人也是基于此对Share SDK进一步了解的。

本人对Share SDK的分享界面也不喜欢,我想要的是像一般应用那样的分享效果,现在还在研究,希望大家多多指导。

本人是android的初学者,有什么不好的地方,望大家多多赐教,不胜感激!

 


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值