Android——第三方登录——新浪微博——获取用户信息——账户绑定
2016-06-17 14:02
771 查看
前一篇文章完成了使用新浪微博登陆,但是并没有获取到用户信息,这篇文章介绍一下登陆成功后如何获取用户信息,以及获取用户信息后怎样与你的App交互。
首先介绍一下获取用户信息:
从官方文档中找到获取用户的方法,看来几行代码就可以搞定了,但是 当我只导入 官方给的weiboSDKCore_3.1.4.jar包时,并没有用户管理需要的OpenAPI,刚开始以为是该API是需要高级权限呢,后来发现该API在给的 WeiboSDK 里面找到,之前官方文档上面给过(没有认真看文档。。。)
好了,前期工作搞定,下面是获取用户信息的代码:
下图是从官网上找的User类说明:
好了,现在已完成新浪微博的登陆与获取登陆的用户信息,下面先 写点我对 新浪微博登陆成功后返回的 Oauth2AccessToken 的理解 为什么在获得后要将这些信息保存到本地,// 保存 Token 到 SharedPreferences 中,其中 参数expires_in是登陆有效时间,可通过access_token 获取用户信息,通过这些信息 我联想到之前做用户登陆注册时做的将用户信息保存到本地,除了将用户信息还将用户登陆时间记录,即为了保存用户信息不是一直可以而是只保留一段时间,这些只是个人理解。
好了,怎样利用现有的新浪微博用户信息呢,怎样跟自己的App自己的服务器关联呢?下面来说一下我的理解。用第三方登录分一下两种情况,如下图所示:
下面是用 没有App账号使用第三方账号登录,流程图如下:
代码如下:
好了,至此完成在没有自己账号的时候用新浪微博账号登录App。
首先介绍一下获取用户信息:
从官方文档中找到获取用户的方法,看来几行代码就可以搞定了,但是 当我只导入 官方给的weiboSDKCore_3.1.4.jar包时,并没有用户管理需要的OpenAPI,刚开始以为是该API是需要高级权限呢,后来发现该API在给的 WeiboSDK 里面找到,之前官方文档上面给过(没有认真看文档。。。)
好了,前期工作搞定,下面是获取用户信息的代码:
mUsersAPI = new UsersAPI(mContext, WEIBO_APP_KEY, mAccessToken); long uid = Long.parseLong(mAccessToken.getUid()); mUsersAPI.show(uid, new RequestListener() { @Override public void onWeiboException(WeiboException arg0) { // TODO Auto-generated method stub } @Override public void onComplete(String response) { if (!TextUtils.isEmpty(response)) { User user = User.parse(response); Toast.makeText(mContext, user.screen_name, Toast.LENGTH_LONG).show(); } } });
下图是从官网上找的User类说明:
好了,现在已完成新浪微博的登陆与获取登陆的用户信息,下面先 写点我对 新浪微博登陆成功后返回的 Oauth2AccessToken 的理解 为什么在获得后要将这些信息保存到本地,// 保存 Token 到 SharedPreferences 中,其中 参数expires_in是登陆有效时间,可通过access_token 获取用户信息,通过这些信息 我联想到之前做用户登陆注册时做的将用户信息保存到本地,除了将用户信息还将用户登陆时间记录,即为了保存用户信息不是一直可以而是只保留一段时间,这些只是个人理解。
好了,怎样利用现有的新浪微博用户信息呢,怎样跟自己的App自己的服务器关联呢?下面来说一下我的理解。用第三方登录分一下两种情况,如下图所示:
下面是用 没有App账号使用第三方账号登录,流程图如下:
代码如下:
mUsersAPI = new UsersAPI(mContext, WEIBO_APP_KEY, mAccessToken); long uid = Long.parseLong(mAccessToken.getUid()); mUsersAPI.show(uid, new RequestListener() { @Override public void onWeiboException(WeiboException arg0) { // TODO Auto-generated method stub } @Override public void onComplete(String response) { if (!TextUtils.isEmpty(response)) { // 璋冪敤 User#parse 灏咼SON涓茶В鏋愭垚User瀵硅薄 User user = User.parse(response); Toast.makeText(mContext, user.profile_image_url, Toast.LENGTH_LONG).show(); PublicData.bu.setUsername(user.id); PublicData.bu.setPassword(WeiboLoginScr(user.id)); PublicData.bu.setNick_URL_NET(user.profile_image_url); PublicData.bu.setSex(user.gender.equals("m") == true ? false : true); String avatarPath = PublicData.LocFileNick.getPath() + "/" +PublicData.getFileName(PublicData.bu.getNick_URL_NET()); PublicData.bu.setNick_URL_LOCAL(avatarPath); System.out.println("Login Success get user info : \n"+PublicData.bu.toString()); File fileTmp = new File(PublicData.bu.getNick_URL_LOCAL()); if(!fileTmp.exists()){ BmobFile bmobfile =new BmobFile(PublicData.getFileName(PublicData.bu.getNick_URL_NET()),"",PublicData.bu.getNick_URL_NET()); downLoadAvatar(bmobfile); }else{ System.out.println("avatar exists!"); } PublicData.bu.signUp(mContext, new SaveListener() { @Override public void onSuccess() { // TODO Auto-generated method stub mActivity.finish(); PublicData.loginState = true; PublicData.bu.setLoginState(true); PublicData.bu.setTime(System.currentTimeMillis()); UserSharePreference sharePreference = new UserSharePreference(mContext); sharePreference.saveMessage(PublicData.bu); gooChat(); } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub Toast.makeText(mContext, arg1, Toast.LENGTH_LONG).show(); if(arg0 == 202){ //账户已存在直接登录 PublicData.bu.login(mContext, new SaveListener() { @Override public void onSuccess() { // TODO Auto-generated method stub PublicData.loginState = true; PublicData.bu.setLoginState(true); PublicData.bu.setTime(System.currentTimeMillis()); UserSharePreference sharePreference = new UserSharePreference(mContext); sharePreference.saveMessage(PublicData.bu); gooChat(); } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub } }); } } }); } }
好了,至此完成在没有自己账号的时候用新浪微博账号登录App。
相关文章推荐
- android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏
- Android开发学习之路--RxAndroid之简单原理
- AndroidStudio NDK开发
- Android开发学习之路--RxAndroid之操作符
- Android ImageView的scaleType属性
- Android开发学习之路--RxAndroid之lambda
- Android 高斯模糊效果从319ms到3ms的优化实现
- Android开发学习之路--RxAndroid之初体验
- Android-LinearGradient实现TextView字体渐变的效果
- Android三种实现自定义ProgressBar的方式介绍
- android listview系列之初步接触listview(一)
- Android传感器(一):传感器列表
- 搭建android框架管理activity类
- Android开发环境配置
- IntentService分析
- android xml中的代码提示不全
- Android自绘动画实现与优化实战——以Tencent OS录音机波形动画为实例
- Android中Selsetor基本使用二,选中时改变按钮背景
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android Studio修改包名