第三方登陆,分享以及短信验证码
2016-08-11 19:25
225 查看
本次记录的是在android studio中集成sharesdk的环境。又需要在新项目里面集成sharesdk的第三方登陆,分享,以及短信验证码,索性就记录下吧。首先需要吐槽下mob,as都这么大势所趋了,还以ec为项目结构,需要集成sharesdk环境的话还需要我们一个个去赋值粘贴。果断差评有木有
一、分享
![](https://img-blog.csdn.net/20160811191239909)
大概是这些地方,如果你的as报错的话,建议使用必杀招,重启as。我就遇到了这么坑爹的问题,昨天怎么都保存,今天早上一来就没错了,总结了下,as抽筋了。
然后基本的mob环境就已经有了。那么我建议你先了解下你这个应用需要在哪些平台分享,然后去mob网站集成。
然后分享这部分就跟ec的都一样了,对,就是这个方法
二、第三方登陆
首先你已经有了sharesdk的环境了,只需要调用里面的对应方法就可以了。一般来说就是qq登陆,微信登陆,微博登陆。
三、短信验证码
这个去mob那里下载Android Studio SMS SDK -Version,然后解压,你会发现就是jar包。
![](https://img-blog.csdn.net/20160811192203312)
如何使用,打开哪个txt文件瞧一瞧How to use?
![](https://img-blog.csdn.net/20160811192304884)
基本环境集成好后,然后甩代码给你们
你会发现,你遇到莫名其妙的问题,重启你的as,然后解决后,就会完美的集成好sharesdk了,当然,你还可以去问问mob客服也是可以的。哟西,都是可以的。
一、分享
大概是这些地方,如果你的as报错的话,建议使用必杀招,重启as。我就遇到了这么坑爹的问题,昨天怎么都保存,今天早上一来就没错了,总结了下,as抽筋了。
需要在你的清单文件androidmainfest中的application中加入以下代码 <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> <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> <!-- 调用新浪原生SDK,需要注册的回调activity --> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <!--微信分享回调 --> <activity android:name="cn.sharesdk.demo.wxapi.WXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" /> <activity android:name=".MainActivity">
然后基本的mob环境就已经有了。那么我建议你先了解下你这个应用需要在哪些平台分享,然后去mob网站集成。
然后分享这部分就跟ec的都一样了,对,就是这个方法
protected void shareShow(){ ShareSDK.initSDK(this); OnekeyShare oks = new OnekeyShare(); //关闭sso授权 oks.disableSSOWhenAuthorize(); // 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法 //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name)); // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用 oks.setTitle("标题"); // 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); }
二、第三方登陆
首先你已经有了sharesdk的环境了,只需要调用里面的对应方法就可以了。一般来说就是qq登陆,微信登陆,微博登陆。
package com.qh.banya.activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.Toast; import com.qh.banya.R; import java.util.HashMap; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.ShareSDK; import cn.sharesdk.sina.weibo.SinaWeibo; import cn.sharesdk.tencent.qq.QQ; import cn.sharesdk.wechat.friends.Wechat; /** * Created by zsj on 2016/8/10. */ public class LoginFragment extends Fragment implements OnClickListener, PlatformActionListener, Handler.Callback { private View view; private ImageView ivWeixin;//微信登陆 private ImageView ivQq;//qq登陆 private ImageView ivWeibo;//微博登陆 private Handler handler;//定义handler进行登陆结果的回调 private static final String TAG = "LoginFragment"; private static final int MSG_AUTH_CANCEL = 2; private static final int MSG_AUTH_ERROR = 3; private static final int MSG_AUTH_COMPLETE = 4; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_login, container, false); initView(); initData(); return view; } private void initView() { ivWeixin = (ImageView) view.findViewById(R.id.iv_weixin); ivWeixin.setOnClickListener(this); ivQq = (ImageView) view.findViewById(R.id.iv_qq); ivQq.setOnClickListener(this); ivWeibo = (ImageView) view.findViewById(R.id.iv_weibo); ivWeibo.setOnClickListener(this); } private void initData() { // 初始化SDK ShareSDK.initSDK(getActivity()); //注册handler handler = new Handler(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.iv_qq: // QQ Platform qzone = ShareSDK.getPlatform(QQ.NAME); authorize(qzone); break; case R.id.iv_weixin: // 微信登录 // 测试时,需要打包签名;sample测试时,用项目里面的demokey.keystore // 打包签名apk,然后才能产生微信的登录 Platform wechat = ShareSDK.getPlatform(Wechat.NAME); authorize(wechat); break; case R.id.iv_weibo: // 新浪微博 Platform sina = ShareSDK.getPlatform(SinaWeibo.NAME); authorize(sina); break; } } // 执行授权,获取用户信息 // 文档: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) { plat.setPlatformActionListener(this); // 关闭SSO授权 plat.SSOSetting(true); plat.showUser(null); } @Override public void onComplete(Platform platform, int action, HashMap<String, Object> hashMap) { if (action == Platform.ACTION_USER_INFOR) { Message msg = new Message(); msg.what = MSG_AUTH_COMPLETE; msg.obj = new Object[] { platform.getName(), hashMap}; handler.sendMessage(msg); } } @Override public void onError(Platform platform, int action, Throwable throwable) { if (action == Platform.ACTION_USER_INFOR) { handler.sendEmptyMessage(MSG_AUTH_ERROR); } throwable.printStackTrace(); } @Override public void onCancel(Platform platform, int action) { if (action == Platform.ACTION_USER_INFOR) { handler.sendEmptyMessage(MSG_AUTH_CANCEL); } else { Log.e(TAG, action + ""); } } /** * 对第三方登陆结果进行回调 * * @param message * @return */ @Override public boolean handleMessage(Message message) { switch (message.what) { case MSG_AUTH_CANCEL: { // 取消授权 Toast.makeText(getActivity(), "授权操作已取消", Toast.LENGTH_SHORT).show(); } break; case MSG_AUTH_ERROR: { // 授权失败 Toast.makeText(getActivity(), "授权操作遇到错误,请阅读Logcat输出; \n 如微信登录,需要微信客户端", Toast.LENGTH_SHORT).show(); } break; case MSG_AUTH_COMPLETE: { // 授权成功 Toast.makeText(getActivity(), "授权成功,正在跳转登录操作…", Toast.LENGTH_SHORT).show(); Object[] objs = (Object[]) message.obj; String platform = (String) objs[0]; //授权成功后取到的资源 HashMap<String, Object> res = (HashMap<String, Object>) objs[1]; // 跳转到主界面 // 这里还需要默认给用户注册 } break; } /** * 返回false,说明事件继续向下分发,继续调用下面的handleMessage方法 * 返回true,说明自己消耗此事件,到此就结束了,起到拦截作用 * 这种用法似曾相识吧,不错,跟ViewGroup分发事件很类似 */ return true; } }
三、短信验证码
这个去mob那里下载Android Studio SMS SDK -Version,然后解压,你会发现就是jar包。
如何使用,打开哪个txt文件瞧一瞧How to use?
基本环境集成好后,然后甩代码给你们
package com.qh.banya.activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; import com.qh.banya.R; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; /** * Created by zsj on 2016/8/10. */ public class RegisterFragment extends Fragment { private View view; private Button btnVerication;//发送验证码 // 填写从短信SDK应用后台注册得到的APPKEY private static String APPKEY = "appkey"; // 填写从短信SDK应用后台注册得到的APPSECRET private static String APPSECRET = "appsecret"; private boolean flag;//标识是否成功发送短信 private Handler handlermarkcode;//handler @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_register, container, false); initView(); initData(); return view; } private void initView() { btnVerication= (Button) view.findViewById(R.id.btn_getverication); } private void initData() { //初始化smssdk SMSSDK.initSDK(getActivity(), APPKEY, APPSECRET); EventHandler eh = new EventHandler() { public void afterEvent(int event, int result, Object data) { Message msg = new Message(); msg.arg1 = event; msg.arg2 = result; msg.obj = data; handlermarkcode.sendMessage(msg); } }; // 注册短信验证的监听 SMSSDK.registerEventHandler(eh); handlermarkcode = new Handler() { public void handleMessage(Message msg) { int event = msg.arg1; int result = msg.arg2; Object data = msg.obj; if (result == SMSSDK.RESULT_COMPLETE) { // 短信注册成功后,返回MainActivity,然后提示新好友 if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {// 提交验证码成功 Toast.makeText(getActivity(), "提交验证码成功", Toast.LENGTH_SHORT).show(); flag = true; } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) { Toast.makeText(getActivity(), "验证码已经发送", Toast.LENGTH_SHORT).show(); } else { ((Throwable) data).printStackTrace(); Toast.makeText(getActivity(), "验证码错误", Toast.LENGTH_SHORT).show(); flag = false; } } }; }; btnVerication.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SMSSDK.getVerificationCode("86", "183********"); } }); } @Override public void onDestroy() { super.onDestroy(); SMSSDK.unregisterAllEventHandler(); } }
你会发现,你遇到莫名其妙的问题,重启你的as,然后解决后,就会完美的集成好sharesdk了,当然,你还可以去问问mob客服也是可以的。哟西,都是可以的。
相关文章推荐
- 消息推送、短信验证,第三方分享和登录,友盟统计
- 前台登陆验证以及短信验证
- 使用ShareSDK实现第三方分享和第三方登陆 以及短信验证码的功能 配置的中的一些坑
- 关于短信验证和第三方分享
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android中集成第三方的分享和版本更新以及用户量统计
- Android 第三方分享中遇到的问题以及解决方案
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站
- 第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料
- Android 第三方分享中遇到的问题以及解决方案
- 从零开始学新浪微博分享和第三方登陆(附源码下载) .
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 数据库应用--回顾SQLite数据库--通过按钮来进行对数据库的管理以及登陆验证操作
- [经验分享] 外部程序调用ucenter同步登陆同步登出论坛以及空间
- shareSDK使用小总结(分享+第三方授权登陆)