美文网首页
Android开发第三方登录 - - 微博登录

Android开发第三方登录 - - 微博登录

作者: 范庆文 | 来源:发表于2017-09-26 17:57 被阅读148次

    由于公司要APP要集成第三方登录的需求 ,所以整理了下微博快速授权
    新浪微博的SDK竟然更新了,而且现在文档写的还是不友好 找文档字段很麻烦 相当无奈.
    新浪微博SDK放在了GitHub上,地址:
    https://github.com/sinaweibosdk/weibo_android_sdk
    首先集成SDK:
    在自己项目的build.gradle中添加:

     allprojects {
            repositories {
                jcenter()
                mavenCentral()
                maven { url "https://dl.bintray.com/thelasterstar/maven/" }
            }
        }
    
    Paste_Image.png

    然后build.gradle中的dependencies添加:

        compile 'com.sina.weibo.sdk:core:2.0.3:openDefaultRelease@aar'
    

    在自己的Application类或者Main中初始化weiboSDK都可以

         //新浪微博初始化,对应的参数分别是app_key,回调地址,和权限
        private void initWebSDK() {
          WbSdk.install(this,new AuthInfo(this, Config.APP_KEY_SINA, Config.REDIRECT_URL,
                    Config.SCOPE));
        }
    

    ▽这个两个地方要使用自己开放平台上的参数


    Paste_Image.png
     /**
     * description :登录页面
     * @version 1.0
     */
    
    public class LoginActivity extends BaseActivity implements ILoginView.View {
    
      ...
      .....
        /**
         * 新浪微博
         */
        private SsoHandler mSsoHandler;
        /** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能  */
        private Oauth2AccessToken mAccessToken;
    
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            ButterKnife.bind(this);
             ......
                 ...........
            //新浪微博
            mSsoHandler = new SsoHandler(LoginActivity.this);
        }
    
    
    
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           ...
               ....
            //sina login
            if(mSsoHandler!=null){
                mSsoHandler.authorizeCallBack(requestCode,resultCode,data);
            }
        }
    
    
    
    
    
        @OnClick({R.id.login_tv_register, R.id.login_btn_go, R.id.login_tv_forget_password,R.id.iv_other_login_qq,R.id.iv_other_login_sina,R.id.iv_other_login_wx})
        public void onViewClicked(View view) {
            switch (view.getId()) {
               ..........
                   ...........
                case R.id.iv_other_login_sina:
                    loginToSina();
                    break;
                  ...
                      .......
            }
        }
        //吊起新浪微博客户端授权,如果未安装这使用web授权
        private void loginToSina() {
            //授权方式有三种,第一种对客户端授权 第二种对Web短授权,第三种结合前两中方式
            mSsoHandler.authorize(new SelfWbAuthListener());
        }
    
          private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
            @Override
            public void onSuccess(final Oauth2AccessToken token) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mAccessToken = token;
                        if (mAccessToken.isSessionValid()) {
                            // 显示 Token
    //                        updateTokenView(false);
                            // 保存 Token 到 SharedPreferences
    //                        AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
                            showMsg(1,"授权成功");
                            //获取个人资料
                            //https://api.weibo.com/2/users/show.json
                            OkHttpUtils.get()
                                    .url("https://api.weibo.com/2/users/show.json")
                                    .addParams("access_token",mAccessToken.getToken())
                                    .addParams("uid",mAccessToken.getUid())
                                    .build()
                                    .execute(new StringCallback() {
                                        @Override
                                        public void onError(Call call, Exception e, int id) {
                                            ViseLog.d("获取失败:"+e.getMessage());
                                            e.printStackTrace();
                                        }
    
                                        @Override
                                        public void onResponse(String response, int id) {
                                            ViseLog.d("response:"+response);
                                        }
                                    });
    
                        }
                    }
                });
            }
    
            @Override
            public void cancel() {
                showMsg(1,"取消授权");
            }
    
            @Override
            public void onFailure(WbConnectErrorMessage errorMessage) {
                Toast.makeText(LoginActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
            }
        }
    
    
    
    
    
        ......
            .....
                ......
    }
    
    

    注意这里用自己的网络框架就好了 参数什么保持正确就行

    Paste_Image.png

    下面就是授权成功后 成功获取了用户信息了

    Paste_Image.png

    然后在按照需求绑定微博等更多操作了

    大家有什么不懂得可以下面留言 我看到会回复 互相学习 如有错误请指出 谢谢啦

    相关文章

      网友评论

          本文标题:Android开发第三方登录 - - 微博登录

          本文链接:https://www.haomeiwen.com/subject/nyqeextx.html