Android——第三方登录——新浪微博——获取用户信息——账户绑定

本文介绍如何在应用中实现新浪微博登录并获取用户信息。详细解释了如何利用微博SDK进行登录验证,以及登录成功后如何调用API获取用户的详细资料,并展示了如何将获取到的信息与自己的App进行整合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前一篇文章完成了使用新浪微博登陆,但是并没有获取到用户信息,这篇文章介绍一下登陆成功后如何获取用户信息,以及获取用户信息后怎样与你的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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值