您的位置:首页 > 移动开发 > IOS开发

iOS开发- ShareSDK分享和第三方登录

2016-11-27 10:40 393 查看
目录(?)[-]

1 获取ShareSDK的AppKey
2 下载SDK
3 快速集成

第一步使快速工具进行集成查看视频教程

Windows下
LinuxMac OS下

第二步配置AndroidManifestxml查看视频教程

1添加权限
添加activity信息
3如果您集成了微信易信新浪微博支付宝还需要添加下面回调的activity处理
替换mob后台申请的Appkey与各个平台申请的key

第三步添加分享代码查看视频教程

一、前面部分引用官方文档,按步骤添加ShareSDK到自己的项目中


1. 获取ShareSDK的AppKey

申请ShareSDK的appkey的流程


2. 下载SDK

下载SDK请点这里

下载页如图所示:





点击下载之后如下图所以,点击下载SDK的下载页,展开平台可以选择其他的第三方平台;demo也是这里下载;





下载完之后的解压目录如图所示:






3. 快速集成

ShareSDK深受大家喜爱,看下亲爱的用户做的详细说明:Studio集成


第一步:使快速工具进行集成(查看视频教程)

进入ShareSDK解压目录,打开“Share SDK for Android”目录,可以找到“QuickIntegrater.jar”,这个就是快速集成ShareSDK的工具


Windows下

首先确定您已经安装了JDK,并且正确配置了JAVA_HOME和PATH系统变量,此时您可以双击QuickIntegrater启动程序





Linux/Mac OS下

同样需要先确保已经正确配置了JDK,之后启动终端,cd进入“Share SDK for Android”目录,输入: Java -jar
QuickIntegrater.jar 可启动QuickIntegrater





正确输入项目的名称和包名,勾选需要的集成的平台,然后点击“确定”。

QuickIntegrater会自行产生一个文件夹,复制此文件夹中所有文件到您的项目中覆盖即可。


第二步:配置AndroidManifest.xml(查看视频教程)

下面清单文件的配置是全部的,没有的平台就是不需要配置


1、添加权限

123456789101112<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"/> <!-- 蓝牙分享所需的权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

2、添加activity信息

(注意: tencent后面的appid要保持和您配置的QQ的appid一致)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<activity

android:name="com.mob.tools.MobUIShell"

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

android:configChanges="keyboardHidden|orientation|screenSize"

android:screenOrientation="portrait"

android:windowSoftInputMode="stateHidden|adjustResize">

<intent-filter>

<dataandroid:scheme="tencent100371282"/>

<actionandroid:name="android.intent.action.VIEW"/>

<categoryandroid:name="android.intent.category.BROWSABLE"/>

<categoryandroid:name="android.intent.category.DEFAULT"/>

</intent-filter>

<!--调用新浪原生SDK,需要注册的回调activity-->

<intent-filter>

<actionandroid:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>

<categoryandroid:name="android.intent.category.DEFAULT"/>

</intent-filter>

</activity>


3、如果您集成了微信,易信,新浪微博支付宝还需要添加下面回调的activity处理;

12345678910111213141516171819202122<!--微信分享回调 --> <activity android:name=".wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" /> <!--易信分享回调 --> <activity android:name=".yxapi.YXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" /> <!-- 支付宝分享回调 --><activity android:name=".apshare.ShareEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true"/>

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



第三步:添加分享代码(查看视频教程)

在您的代码中调用此方法,即可打开一键分享功能进行分享

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

privatevoidshowShare(){

ShareSDK.initSDK(this);

OnekeyShareoks=newOnekeyShare();

//关闭sso授权

oks.disableSSOWhenAuthorize();

// 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法

//oks.setNotification(R.drawable.ic_launcher,
getString(R.string.app_name));

//
title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用

oks.setTitle(getString(R.string.share));

//
titleUrl是标题的网络链接,仅在人人网和QQ空间使用

oks.setTitleUrl("http://sharesdk.cn");

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

oks.setText("我是分享文本");

//
imagePath是图片的本地路径,Linked-In以外的平台都支持此参数

//oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片

//
url仅在微信(包括好友和朋友圈)中使用

oks.setUrl("http://sharesdk.cn");

//
comment是我对这条分享的评论,仅在人人网和QQ空间使用

oks.setComment("我是测试评论文本");

//
site是分享此内容的网站名称,仅在QQ空间使用

oks.setSite(getString(R.string.app_name));

//
siteUrl是分享此内容的网站地址,仅在QQ空间使用

oks.setSiteUrl("http://sharesdk.cn");

// 启动分享GUI

oks.show(this);

}

运行效果如下:







编译并运行后,弹出类似上图的分享列表选择页面,点击后弹出分享窗口,点击发表后就成功发送到社交平台的话说明你已经基本集成成功了。

至此,分享功能就可以使用了。下面着重介绍下如何添加第三方登录

二、第三方登录实现

在步骤一完成后进行如下操作

[java] view
plain copy

//1.威信的

//微信登录

//测试时,需要打包签名;sample测试时,用项目里面的demokey.keystore

//打包签名apk,然后才能产生微信的登录

//Platform wechat = ShareSDK.getPlatform(Wechat.NAME);

//authorize(wechat);

//2.新浪微博

//新浪微博

Platform sina = ShareSDK.getPlatform(SinaWeibo.NAME);

authorize(sina);

[java] view
plain copy

//执行授权,获取用户信息

//文档:http://wiki.mob.com/Android_%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E8%B5%84%E6%96%99

private void authorize(Platform plat) {

if (plat == null) {

//popupOthers();

return;

}

plat.setPlatformActionListener(this);

//关闭SSO授权

plat.SSOSetting(true);

plat.showUser(null);

}

[java] view
plain copy

@Override

public void onCancel(Platform platform, int action) {

// TODO Auto-generated method stub

if (action == Platform.ACTION_USER_INFOR) {

handler.sendEmptyMessage(MSG_AUTH_CANCEL);

}

}

@Override

public void onComplete(Platform platform, int action,

HashMap<String, Object> res) {

// TODO Auto-generated method stub

if (action == Platform.ACTION_USER_INFOR) {

Message msg = new Message();

msg.what = MSG_AUTH_COMPLETE;

msg.obj = new Object[] {platform.getName(), res};

handler.sendMessage(msg);

}

}

@Override

public void onError(Platform arg0, int action, Throwable t) {

// TODO Auto-generated method stub

if (action == Platform.ACTION_USER_INFOR) {

handler.sendEmptyMessage(MSG_AUTH_ERROR);

}

t.printStackTrace();

}

在Oncreat中初始化一个handler :handler = new Handler(this);

实现方法:

[java] view
plain copy

@SuppressWarnings("unchecked")

public boolean handleMessage(Message msg) {

switch(msg.what) {

case MSG_AUTH_CANCEL: {

//取消授权

Toast.makeText(NewsDetailActivity.this, R.string.auth_cancel, Toast.LENGTH_SHORT).show();

} break;

case MSG_AUTH_ERROR: {

//授权失败

Toast.makeText(NewsDetailActivity.this, R.string.auth_error, Toast.LENGTH_SHORT).show();

} break;

case MSG_AUTH_COMPLETE: {

//授权成功

Toast.makeText(NewsDetailActivity.this, R.string.auth_complete, Toast.LENGTH_LONG).show();

Object[] objs = (Object[]) msg.obj;

String platform = (String) objs[0];

HashMap<String, Object> res = (HashMap<String, Object>) objs[1];

// if (signupListener != null && signupListener.onSignin(platform, res)) {

// SignupPage signupPage = new SignupPage();

// signupPage.setOnLoginListener(signupListener);

// signupPage.setPlatform(platform);

// signupPage.show(activity, null);

// }

doLogined(platform);

} break;

case MSG_SMSSDK_CALLBACK:

//{

// if (msg.arg2 == SMSSDK.RESULT_ERROR) {

// Toast.makeText(activity, "操作失败", Toast.LENGTH_SHORT).show();

// } else {

// switch (msg.arg1) {

// case SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE: {

// if(msgLoginDlg != null && msgLoginDlg.isShowing()){

// msgLoginDlg.dismiss();

// }

// Toast.makeText(activity, "提交验证码成功", Toast.LENGTH_SHORT).show();

// Message m = new Message();

// m.what = MSG_AUTH_COMPLETE;

// m.obj = new Object[] {"SMSSDK", (HashMap<String, Object>) msg.obj};

// handler.sendMessage(m);

// } break;

// case SMSSDK.EVENT_GET_VERIFICATION_CODE:{

// Toast.makeText(activity, "验证码已经发送", Toast.LENGTH_SHORT).show();

// } break;

// }

// }

//}

break;

}

return false;

}

[java] view
plain copy

private void doLogined(String platform) {

// TODO Auto-generated method stub

mPlatform=ShareSDK.getPlatform(platform);

String gender = "";

if(platform != null){

gender = mPlatform.getDb().getUserGender();

if(gender.equals("m")){

// userInfo.setUserGender(UserInfo.Gender.BOY);

gender = "男";

}else{

//userInfo.setUserGender(UserInfo.Gender.GIRL);

gender = "女";

}

// userInfo.setUserIcon(platform.getDb().getUserIcon());

// userInfo.setUserName(platform.getDb().getUserName());

// userInfo.setUserNote(platform.getDb().getUserId());

Toast.makeText(getApplicationContext(), gender+"/"+mPlatform.getDb().getUserName()+"/"+mPlatform.getDb().getUserId(), 4000).show();

}

// tvUserName.setText(userInfo.getUserName());

// tvUserGender.setText(gender);

// tvUserNote.setText("USER ID : " + userInfo.getUserNote());

}

至此,即可获得用户信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: