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到自己的项目中
申请ShareSDK的appkey的流程
下载SDK请点这里
下载页如图所示:
点击下载之后如下图所以,点击下载SDK的下载页,展开平台可以选择其他的第三方平台;demo也是这里下载;
下载完之后的解压目录如图所示:
ShareSDK深受大家喜爱,看下亲爱的用户做的详细说明:Studio集成
进入ShareSDK解压目录,打开“Share SDK for Android”目录,可以找到“QuickIntegrater.jar”,这个就是快速集成ShareSDK的工具
首先确定您已经安装了JDK,并且正确配置了JAVA_HOME和PATH系统变量,此时您可以双击QuickIntegrater启动程序
同样需要先确保已经正确配置了JDK,之后启动终端,cd进入“Share SDK for Android”目录,输入: Java -jar
QuickIntegrater.jar 可启动QuickIntegrater
正确输入项目的名称和包名,勾选需要的集成的平台,然后点击“确定”。
QuickIntegrater会自行产生一个文件夹,复制此文件夹中所有文件到您的项目中覆盖即可。
下面清单文件的配置是全部的,没有的平台就是不需要配置
运行效果如下:
编译并运行后,弹出类似上图的分享列表选择页面,点击后弹出分享窗口,点击发表后就成功发送到社交平台的话说明你已经基本集成成功了。
至此,分享功能就可以使用了。下面着重介绍下如何添加第三方登录
二、第三方登录实现
在步骤一完成后进行如下操作
[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());
}
至此,即可获得用户信息。
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 -jarQuickIntegrater.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());
}
至此,即可获得用户信息。
相关文章推荐
- iOS开发---集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS开发日记4-第三方登录(ShareSDK)
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS:IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS之ShareSDK实现分享、第三方登录等功能
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能
- iOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 第三方登录功能分享&第三方登录模块开发(iOS)
- iOS 社会化分享 第三方开发包ShareSDK使用
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能(备用)
- React Native 集成分享第三方登录功能分享第三方登录模块开发(iOS)
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能