跳转到: 导航, 搜索
第150行: 第150行:
  
 
'''示例'''
 
'''示例'''
 +
 +
{{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/OAuth2_intro.png}}
  
 
{{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/oauth2v3.png}}
 
{{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/oauth2v3.png}}
 
 
{{Img_polaroid|src=http://www.sinaimg.cn/blog/developer/wiki/OAuth2_intro.png}}
 
  
  
第177行: 第176行:
 
</td></tr>
 
</td></tr>
 
<tr>
 
<tr>
<td class="wiki_table_tdfirst">[[Oauth2/get_token_info|OAuth2/get_token_info]]{{Icon_new2}}
+
<td class="wiki_table_tdfirst">[[Oauth2/get_token_info|OAuth2/get_token_info]]
 
</td><td>授权信息查询接口
 
</td><td>授权信息查询接口
 
</td></tr>
 
</td></tr>
 
<tr>
 
<tr>
<td class="wiki_table_tdfirst">[[Oauth2/revokeoauth2|OAuth2/revokeoauth2]]{{Icon_new2}}
+
<td class="wiki_table_tdfirst">[[Oauth2/revokeoauth2|OAuth2/revokeoauth2]]
 
</td><td>授权回收接口
 
</td><td>授权回收接口
 
</td></tr>
 
</td></tr>
第189行: 第188行:
 
</td></tr>
 
</td></tr>
 
</table>
 
</table>
 
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
第230行: 第228行:
 
使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。
 
使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。
 
</div>
 
</div>
 
  
 
<div class="wiki_taglist">
 
<div class="wiki_taglist">

2014年7月17日 (四) 16:18的版本

微博登录

微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。它有如下特点:

  • • 直接用微博账号登录你的应用或网站;
  • • 获得高质量微博活跃用户;
  • • 更便捷的分享到微博,提高网站信息传播力;


阅读以下文档,帮助了解如何在你的应用或网站中,添加用微博帐号登录功能。


移动应用

SSO登录。

示例

通过微博官方客户端快速完成OAuth2.0授权,在你的移动应用中实现用户登录。SSO登录不需要重复输入微博用户名、密码,只需要一步操作,直接点击授权按钮即可完成授权,增强了操作简便性及帐号安全性。

用户操作流程示例

下面你可以选择你的应用所对应的系统平台,一步一步的在你的应用中完成SSO登录的功能。


iOS

首先,你需要确保用户的设备上所安装的微博官方客户端,满足最低的版本要求:iPhone版微博客户端3.0.0及以上,iPad版微博客户端2.9.0及以上。


然后,下载微博官方SDK。在SDK包中,按示例代码和SDK文档,配置工程,并添加SDK文件到工程。


结合自己的应用,调用 SendRequest 方法,会跳转到微博官方客户端进行授权。当授权完成后会回调给你的应用程序,在你的应用中实现 WeiboSDKDelegatedidReceiveWeiboResponse 方式监听此次请求的response。

应用代码片段

Object C
- (void)ssoButtonPressed
{
    WBAuthorizeRequest *request = [WBAuthorizeRequest request];
    request.redirectURI = kRedirectURI;
    request.scope = @"all";
    request.userInfo = @{@"SSO_From": @"SendMessageToWeiboViewController",
                         @"Other_Info_1": [NSNumber numberWithInt:123],
                         @"Other_Info_2": @[@"obj1", @"obj2"],
                         @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
    [WeiboSDK sendRequest:request];
}


Android

首先,你需要确保用户的设备上所安装的微博官方客户端,满足最低的版本要求:Android版微博客户端3.0.0及以上 。


然后,下载微博官方SDK。在SDK包中,按示例代码和SDK文档,配置工程和你的应用的包名、签名,并添加SDK文件到工程。


将工程中 Constants 类的 APP_KEYAPP、Redirect_URL、SCOPE域 替换成你的应用对应的参数。在 WBAuthActivity 类中,创建微博授权类对象,将应用的信息保存。实现 WeiboAuthListener 接口,授权成功后,SDK会将 access_token、expires_in、uid 等通过Bundle的形式返回,在 onComplete 函数中,可以获取该信息。


接着,创建 SsoHandler 对像,调用 SsoHandler#authorize 方法,重写 Activity#onActivityResult 方法,调用 SsoHandler#authorizeCallBack

应用代码片段

Java
public interface Constants {
    public static final String APP_KEY = "2045436852"; // 应用的APP_KEY
    public static final String REDIRECT_URL = "http://www.sina.com";// 应用的回调页
    public static final String SCOPE = // 应用申请的高级权限
        "email,direct_messages_read,direct_messages_write,"
        + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
        + "follow_app_official_microblog," + "invitation_write";
}

mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);

class AuthListener implements WeiboAuthListener {
    @Override
    public void onComplete(Bundle values) {
        // 从 Bundle 中解析 Token
        mAccessToken = Oauth2AccessToken.parseAccessToken(values);
        if (mAccessToken.isSessionValid()) {
            //保存Token
            AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
                .........
        } else {
                // 当您注册的应用程序签名不正确时,就会收到错误Code,请确保签名正确
                String code = values.getString("code", "");
                    .........
        }
    }
    .........
}

mSsoHandler = new SsoHandler(WBAuthActivity.this, mWeiboAuth);
mSsoHandler.authorize(new AuthListener());

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


Web网站

OAuth2.0授权,与微博登录组件。

示例


使用接口深度开发,适合后端开发人员

使用微博的OAuth2.0授权接口,完成微博登录功能的开发,这种方式可以和你的网站自身的用户系统连接更紧密,适合有一定开发能力的后端开发人员。

接口 说明
OAuth2/authorize 请求用户授权Token
OAuth2/access_token 获取授权过的Access Token
OAuth2/get_token_info 授权信息查询接口
OAuth2/revokeoauth2 授权回收接口
OAuth2/get_oauth2_token OAuth1.0的Access Token更换至OAuth2.0的Access Token

Web端的验证授权

引导需要授权的用户到如下地址:

URL
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

换取Access Token:

URL
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

返回值:

JSON
{
    "access_token": "SlAV32hkKG",
    "remind_in": 3600,
    "expires_in": 3600  
}

使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

当然,我们提供了多种语言的SDK,这些SDK里都集成了OAuth2.0功能,使用SDK将极大的简化你的开发难度。


使用微博JS SDK,适合前端开发人员

在您的博客、网站或其他支持HTML的位置嵌入一段微博登录按钮对应的代码,便可以直接通过微博帐号登录。

示例

在HTML标签中增加XML命名空间

HTML
<html xmlns:wb="http://open.weibo.com/wb">

在HEAD头中引入WB.JS

HTML
<head>
<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=YOUR APPKEY" type="text/javascript" charset="utf-8"></script>
</head>

在需要部署微博发布器的位置粘贴WBML代码

HTML
<wb:login-button type="3,2" onlogin="login" onlogout="logout">登录按钮</wb:login-button>