(一)新浪微博_OAuth2.0授权机制

转载请说明出处
http://blog.csdn.net/sinat_29071599/article/details/47997485
by 背包下的影子


OAuth2.0 概述
   整体来看OAuth2.0整个授权验证流程还是比较简单的,关于OAuth2.0的授权流程可以参考下面的流程图。

OAuth2.0授权流程图
其中
Client指第三方应用,
Resource Owner指用户,
Authorization Server是我们的授权服务器,
Resource Server是API服务器。

A.客户端向用户发出授权请求
B.用户同意客户端的请求 (拿到用户的 授权令牌 grant Token)
C.在经过用户同意后,客户端拿着”授权令牌”向授权服务器请求 “获取令牌”Access Token
D.授权服务器经过验证给予客户端“获取令牌”Access Token
E. 客户端拿着令牌向资源服务器申请用户所拥有的资源
F.资源服务器返回客户端所需要的资源
这里大体可以分三步:
1、拿到用户的 授权Token 这把钥匙 (A B);
2、用授权Token拿到Access Token这把钥匙(C D);
3、有了Access Token后,在有效期内我们通过开放平台给出的相应接口,拿到我们所需要的资源(E F)


OAuth2.0接口

对应上面三步的接口

  1. OAuth2/authorize 请求用户授权Token
  2. OAuth2/access_token 获取授权过的Access Token
  3. OAuth2/get_token_info授权信息查询接口


 一、请求用户的  授权Token
//请求示例代码
https://api.weibo.com/oauth2/authorize?client_id=APP_KEY&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code

 二、向授权服务器 请求  Access Token

url---> https://api.weibo.com/oauth2/access_token

post请求参数如下
                    必选  类型及范围   说明
        client_id   true    string  申请应用时分配的AppKey。
    client_secret   true    string  申请应用时分配的AppSecret。
       grant_type   true    string  请求的类型,填写authorization_code

当grant_type为authorization_code时

            code    true    string  调用authorize获得的code值。
    redirect_uri    true    string  回调地址,需需与注册应用里的回调地址一致。

返回的结果json

 {
       "access_token": "ACCESS_TOKEN",
       "expires_in": 1234,
       "remind_in":"798114",
       "uid":"12341234"
 }

至此就拿到了accessToken了,拿到他就可以想资源服务器通过对应的rest接口申请相应的资源。


新浪微博SDK已经集成好的4中授权方式,可以使开发者快速进行授权

  1. SSO 授权:在有客户端的情况下,使用 SSO 授权登陆;无客户端的情况下,自动唤起 Web 授权
  2. Web 授权:在没有客户端的情况下,可直接使用该授权
  3. SSO 授权+Web 授权 混合授权, ( 如果手机安装了微博客户端则使用客户端授权,没有则进行网页授权 )
  4. Code手动授权

第三种方式授权是官方推荐的

 mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
 mSsoHandler = new SsoHandler(MainActivity.this, mAuthInfo);
 findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mSsoHandler.authorize(new AuthListener());
            }
        });
 class AuthListener implements WeiboAuthListener {

        @Override
        public void onComplete(Bundle bundle) {
            mAccessToken = Oauth2AccessToken.parseAccessToken(bundle);
            if (mAccessToken != null && mAccessToken.isSessionValid()) {
                String phone = mAccessToken.getUid();
                Toast.makeText(getApplicationContext(), phone + "", Toast.LENGTH_LONG).show();

                AccessTokenKeeper.writeAccessToken(MainActivity.this, mAccessToken);

            }
        }

        @Override
        public void onWeiboException(WeiboException e) {

        }

        @Override
        public void onCancel() {

        }
    }
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (mSsoHandler != null) {
            mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
        }
    }

效果图片

确定之后,会返回

{
“access_token”: “SlAV32hkKG”,
“remind_in”: 3600,
“expires_in”: 3600
“refresh_token”: “QXBK19xm62”
}


自此,新浪微博OAuth2.0就此告一段落,希望能帮助你>_

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值