新浪微博获取code authorize code会过期吗

微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。另外,为了方便开发者开发、测试自己的应用,我们还提供了Basic Auth的身份鉴权方式,但Basic Auth仅适用于应用所属的开发者自己调用接口。
OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式。
关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。
开发者可以先浏览OAuth2.0的接口文档,熟悉OAuth2.0的接口及参数的含义,然后我们根据应用场景各自说明如何使用OAuth2.0。
请求用户授权Token
获取授权过的Access Token
授权信息查询接口
授权回收接口
OAuth1.0的Access Token更换至OAuth2.0的Access Token
1、OAuth2.0授权无需申请,任何应用都可以使用。如果开发者需要更长的授权有效期参考本文档授权有效期部分。
2、如果你是站外网页应用或客户端应用,出于安全性考虑,需要在平台网站填写redirect_url(授权回调页),才能使用OAuth2.0,填写地址:“我的应用&应用信息&高级信息”,对于客户端,我们也提供了默认的回调页地址。详细请查看授权页功能部分。
新版授权页改变了之前页面信息元素过多,对用户使用带来干扰的问题,登录和授权这两个行为已在新版中分离,用户能够更好地理解帐号登录和授权的过程,也为未来更多的功能带来承载空间。
当前一个最完整的授权分为三个步骤:登录-普通授权-高级授权(SCOPE)。但这三个步骤并不是必然出现,当用户的微博处于登录状态时,页面会自动跳转到普通授权页,“高级授权”同样也不是必须,如果开发者不申请SCOPE权限,系统会自动跳过此步骤,回调应用。我们在灰度测试中统计发现,只要合理的使用高级授权,开发者完全不必担心增加操作所带来的页面流失率问题,相反,一个清晰的授权体验更能获取用户的信任。
与此同时,授权项将会变的更加有条理,之前的普通权限将作为基础服务,用户不再有感知,与用户隐私相关的会归到高级授权,用户在授权时有权利逐条取消,进一步增强了隐私控制。
开发者需要根据各自的应用场景,选择适用的OAuth2.0授权流程:
1、PC端和Web网站,请参考:Web网站的验证授权(Authorization Code)
2、移动端应用可直接使用官方移动SDK,通过呼起微博客户端(未安装微博客户端的会呼起H5授权页)方式授权
3、H5轻应用,请参考
Web网站的授权
1. 引导需要授权的用户到如下地址:
/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
2. 如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3. 换取Access Token
/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
其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中,返回值
&access_token&: &SlAV32hkKG&,
&remind_in&: 3600,
&expires_in&: 3600
4. 使用获得的Access Token调用API
移动应用的授权
移动应用(主要指Mobile Native App),建议使用官方提供的支持SSO授权的SDK, 可以大大简化授权流程开发,降低开发成本。
需要说明的是,移动应用请使用上的授权接口,普通的发博,评论等资源API依旧调用接口。
微博开放平台的OAuth2.0授权机制下,第三方获取到的access_token是有过期时间的,通常过期时间为7天。
授权级别和OAuth2.0 access_token有效期对应表:
授权有效期
1、只有未过审核的应用才处于测试级别。
2、应用所属开发者授权应用时,有效期为5年。
你可以在 “我的应用&接口管理&授权机制” 上查询当前应用的授权级别。也可以在这里申请提高授权有效期。
开发者可以通过两种方式计算access_token的实效时间:
1、用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期;
2、从上述对应表中,找到应用所对应的授权有效期,过期时间 =
用户授权时间 + 授权有效期;
第三方开发应用需要具备一定的健壮性,调用接口时判断接口的返回值,如果用户的access_token失效,需要引导用户重新授权。
失效原因有以下几个:
1、用户取消了对应用的授权;
2、access_token自然过期;
3、用户修改了密码,冻结了对应用的授权;
4、微博发现用户帐号被盗,冻结了用户对应用的授权;
如果用户在授权有效期内重新打开授权页授权(如果此时用户有微博登录状态,这个页面将一闪而过),那么微博会为开发者自动延长access_token的生命周期,请开发者维护新授权后得access_token值。
除此之外,我们也提供了通过 Refresh Token 刷新的方式来延续授权有效期,但需要注意的是:只有使用微博官方移动SDK的移动应用,才可以从SDK的方法中获取到 Refresh Token。
Refresh Token 是 Access Grants 的一种,在获取 Access Token 时,认证服务器将返回相应的 Refresh Token,如果 Access Token 过期,就可以用 Refresh Token 去刷新。
Refresh Token 也是有有效期的,Refresh Token 的有效期目前为30天,在有效期内随时可以刷新。
通过 Refresh Token 刷新得到的新的 Access Token ,其有效期等同于原来的有效期,即原来 Access Token 的有效期是7天,则新获得的也是7天。
简单来说就是对于使用了微博移动SDK的移动应用,授权(Access Token)7天有效,30天可续,每续一次增加7天有效。
1、当你是使用微博官方移动SDK的移动应用时,授权返回access_token的同时,还会多返回一个refresh_token:
&access_token&: &SlAV32hkKG&,
&remind_in&: 3600,
&expires_in&: 3600
&refresh_token&: &QXBK19xm62&
2、当你调用API接口返回 Access Token 过期时,你可以调用 oauth2/access_token 并传入 refresh_token:
/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=refresh_token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&refresh_token=…
&access_token&: &SlAV32hkKG&,
&expires_in&: 3600
3、使用新获得的Access Token调用API
使用OAuth2.0调用API接口有两种方式:
1、 直接使用参数,传递参数名为 access_token
/2/statuses/public_timeline.json?access_token=abcd
2、在header里传递,形式为在header里添加 Authorization:OAuth2空格abcd,这里的abcd假定为Access Token的值,其它接口参数正常传递即可。
注:所有的微博开放平台接口都部署在域下,仅有移动端的授权接口在域。
Scope是OAuth2.0新版授权页提供的一个功能,通过scope,平台将开放更多的微博核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新OAuth2.0授权页中有权利选择赋予应用的功能。
Scope开放的接口文档:
通常Mobile Native App没有服务器回调地址,您可以在应用控制台授权回调页处填写平台提供的默认回调页,该页面用户不可见,仅用于获取access token。
OAuth2.0客户端默认回调页:
授权页会默认读取当前用户的微博登录状态,如果你想让用户重新登录,请在调用authorize接口时传入参数:forcelogin=true,默认不填写此参数相当于forcelogin=false。
开发者可以在应用控制台填写取消授权回调页,当用户取消你的应用授权时,开放平台会回调你填写的这个地址。并传递给你以下参数,source:应用appkey,uid :取消授权的用户,auth_end :取消授权的时间
OAuth是一种国际通用的授权方式, OAuth2.0的官方技术说明可参看
如果你仍在使用,请进入浏览相关文档。
微博OAuth2.0实现中,授权服务器在接收到验证授权请求时,会按照OAuth2.0协议对本请求的请求头部、请求参数进行检验,若请求不合法或验证未通过,授权服务器会返回相应的错误信息,包含以下几个参数:
error: 错误码
error_code: 错误的内部编号
error_description: 错误的描述信息
error_url: 可读的网页URI,带有关于错误的信息,用于为终端用户提供与错误有关的额外信息。
错误信息的返回方式有两种:
1. 当请求授权Endpoint:
时出现错误,返回方式是:跳转到redirect_uri,并在uri
的query parameter中附带错误的描述信息。
2. 当请求access token endpoing:
时出现错误,返回方式:返回JSON文本。例如:
&error&: &unsupported_response_type&,
&error_code&: 21329,
&error_description&: &不支持的ResponseType.&
OAuth2.0错误响应中的错误码定义如下表所示:
错误码(error)
错误编号(error_code)
错误描述(error_description)
redirect_uri_mismatch
重定向地址不匹配
invalid_request
请求不合法
invalid_client
client_id或client_secret参数无效
invalid_grant
提供的Access Grant是无效的、过期的或已撤销的
unauthorized_client
客户端没有权限
expired_token
unsupported_grant_type
不支持的 GrantType
unsupported_response_type
不支持的 ResponseType
access_denied
用户或授权服务器拒绝授予数据访问权限
temporarily_unavailable
服务暂时无法访问
appkey permission denied
应用权限不足
OAuth2.0相关问题,查看
文档更新时间:7725人阅读
android 开源及第三方项目(28)
sso授权,指的是通过一键点击的简单方式唤起微博客户端行为的授权的方式,因为操作简单,所以作为很多应用的第三方登录的选择。
当然,你想使用这个功能,首先你得有本地客户端,否则的话,会使用web的授权方式,慢慢的输入你的账户和密码来获取授权。
在编码前,你得为此做些简单的准备工作。
&&&&&&& 1.下载官方的SDK,在里面有实例和MD5的签名工具。
在里面的签名工具,根据你输入的包名来得到MD5值,你需要这个值来正确的创建应用。
在里面的还有weiboSDK,你需要把它加入你的应用中,引用其中的方法。
&&&&&&& 2.在清单中加入访问网络的权限
&&&&&&& 3.你需要在新浪的开放平台创建应用。
定义授权参数的接口:
(老实说,我是直接copy的demo,改为自己的授权信息就可以了)。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY
public static final String REDIRECT_URL = &&;
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&;
缓存授权信息:
* 该类定义了微博授权时所需要的参数。
public class AccessTokenKeeper {
private static final String PREFERENCES_NAME = &com_weibo_sdk_android&;
private static final String KEY_UID
private static final String KEY_ACCESS_TOKEN
= &access_token&;
private static final String KEY_EXPIRES_IN
= &expires_in&;
* 保存 Token 对象到 SharedPreferences。
* @param context 应用程序上下文环境
* @param token
Token 对象
public static void writeAccessToken(Context context, Oauth2AccessToken token) {
if (null == context || null == token) {
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.putString(KEY_UID, token.getUid());
editor.putString(KEY_ACCESS_TOKEN, token.getToken());
editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
* 从 SharedPreferences 读取 Token 信息。
* @param context 应用程序上下文环境
* @return 返回 Token 对象
public static Oauth2AccessToken readAccessToken(Context context) {
if (null == context) {
Oauth2AccessToken token = new Oauth2AccessToken();
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
token.setUid(pref.getString(KEY_UID, &&));
token.setToken(pref.getString(KEY_ACCESS_TOKEN, &&));
token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));
* 清空 SharedPreferences 中 Token信息。
* @param context 应用程序上下文环境
public static void clear(Context context) {
if (null == context) {
SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.clear();
集成的sso授权 +获取用户名:
* 该类主要演示如何进行授权、SSO登陆。
public class WBAuthActivity extends Activity implements OnClickListener {
/** 显示认证后的信息,如 AccessToken */
private TextView mTokenT
/** 微博 Web 授权类,提供登陆等功能 */
private WeiboAuth mWeiboA
/** 封装了 &access_token&,&expires_in&,&refresh_token&,并提供了他们的管理功能 */
private Oauth2AccessToken mAccessT
/** 注意:SsoHandler 仅当 SDK 支持 SSO 时有效 */
private SsoHandler mSsoH
/** 用户信息接口 */
private UsersAPI mUsersAPI;
private Button ssoB
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acy_sinasso);
initView();
public void initView() {
mTokenText = (TextView) findViewById(R.id.tv_txt);
// SSO 授权
ssoBtn = (Button) findViewById(R.id.btn_sso);
// 创建微博实例
mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,
Constants.REDIRECT_URL, Constants.SCOPE);
// 从 SharedPreferences 中读取上次已保存好 AccessToken 等信息,
// 第一次启动本应用,AccessToken 不可用
mAccessToken = AccessTokenKeeper.readAccessToken(this);
if (mAccessToken.isSessionValid()) {
updateTokenView(true);
ssoBtn.setOnClickListener(this);
* 当 SSO 授权 Activity 退出时,该函数被调用。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// SSO 授权回调
// 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResult
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
* 微博认证授权回调类。 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用
* {@link SsoHandler#authorizeCallBack} 后, 该回调才会被执行。 2. 非 SSO
* 授权时,当授权结束后,该回调就会被执行。 当授权成功后,请保存该 access_token、expires_in、uid 等信息到
* SharedPreferences 中。
class AuthListener implements WeiboAuthListener {
// 授权完成
public void onComplete(Bundle values) {
// 从 Bundle 中解析 Token
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this,
mAccessToken);
Toast.makeText(WBAuthActivity.this, &success!!&,
Toast.LENGTH_SHORT).show();
// 根据uid 获取用户的昵称,因为uid是在回调方法从服务器传递过来的数据中。
long uid = Long.parseLong(mAccessToken.getUid());
mUsersAPI.show(uid, mListener);
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
Toast.makeText(WBAuthActivity.this, &fail&, Toast.LENGTH_LONG)
// 取消授权
public void onCancel() {
Toast.makeText(WBAuthActivity.this, &cancel&, Toast.LENGTH_LONG)
// 授权异常
public void onWeiboException(WeiboException e) {
Toast.makeText(WBAuthActivity.this,
&Auth exception : & + e.getMessage(), Toast.LENGTH_LONG)
* 显示当前 Token 信息。 配置文件中是否已存在 token 信息并且合法
public void updateTokenView(boolean hasExisted) {
// 获取用户信息接口
mUsersAPI = new UsersAPI(mAccessToken);
String date = new SimpleDateFormat(&yyyy/MM/dd HH:mm:ss&)
.format(new java.util.Date(mAccessToken.getExpiresTime()));
String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
mTokenText
.setText(String.format(format, mAccessToken.getToken(), date));
String message = String.format(format, mAccessToken.getToken(), date);
if (hasExisted) {
message = getString(R.string.weibosdk_demo_token_has_existed)
// 根据uid 获取用户的昵称,因为uid是在回调方法从服务器传递过来的数据中。
long uid = Long.parseLong(mAccessToken.getUid());
mUsersAPI.show(uid, mListener);
mTokenText.setText(message);
* 微博 OpenAPI 回调接口。
private RequestListener mListener = new RequestListener() {
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
// 调用 User#parse 将JSON串解析成User对象
User user = User.parse(response);
if (user != null) {
Toast.makeText(WBAuthActivity.this,
&获取User信息成功,用户昵称:& + user.screen_name,
Toast.LENGTH_LONG).show();
mTokenText.setText(user.screen_name);
Toast.makeText(WBAuthActivity.this, response,
Toast.LENGTH_LONG).show();
public void onWeiboException(WeiboException e) {
ErrorInfo info = ErrorInfo.parse(e.getMessage());
Toast.makeText(WBAuthActivity.this, info.toString(),
Toast.LENGTH_LONG).show();
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == ssoBtn) {
mSsoHandler = new SsoHandler(WBAuthActivity.this, mWeiboAuth);
mSsoHandler.authorize(new AuthListener());
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&com.sina.weibo.sdk.widget.LoginButton
android:id=&@+id/btn_sso&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_marginLeft=&10dp& /&
android:id=&@+id/tv_txt&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:text=&info& /&
&/LinearLayout&
1.md5签名工具不能使用
你在使用签名工具前,需要先在你的设备上安装该应用。
2.认证消息出错
检查自己的回调页和自己应用中的回调页是否一致。
3.如果你的开发者身份没有认证,那么昨天申请的签名,今天可能不能用了,需要重新申请签名。
4.sso package or sign error:
有可能是签名失效了,你重新用md5签名工具申请个新的就可以了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:429463次
积分:5713
积分:5713
排名:第2678名
原创:195篇
评论:149条
(1)(1)(1)(2)(3)(1)(9)(6)(2)(9)(7)(6)(5)(5)(5)(3)(8)(10)(15)(16)(8)(14)(17)(10)(17)(10)(5)获得Request Token之后,需要请求用户授权该Request Token
标注的OAuth返回格式
参考 (英文)
如使用XML/JSON返回方式(参看后文),需传递以下附加参数
oauth_token 上一步获(即:oauth/request_token接口调用)取到的oauth token
oauth_callback, 需要进行url encode
display,定义页面调用类型,目前我们提供了6种调用类型
    普通web调用:display=page
这个也是默认调用类型
    Android,iPhone调用:display=mobile
wap访问页面自动调用:display=wap
我们会根据信息头来判断是wap1.2还是wap2.0
wap1.2页面调用:display=wap1.2 供wap1.2访问
wap2.0页面调用:display=wap2.0 供wap2.0访问
    popup弹窗调用:display=popup
json 或 xml(通常移动终端使用)
userId 新浪通行证账户名
passwd 密码
参见说明。
处下载PHP SDK(支持OAuth验证之版本)
代码示例如下:
//oauth/authorize
$o = new WeiboOAuth( WB_AKEY , WB_SKEY
$keys = $o-&getRequestToken();
$aurl = $o-&getAuthorizeURL( $keys['oauth_token'] ,false , 'http://localhost/callback.php');
echo($aurl);
文档更新时间:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&当前访客身份:游客 [
梦想 追求 坚持 未来 我的!
:这个页面有bug
:引用来自“刘银东-”的评论Could not get a res...
:Could not get a resource from the pool 这个错...
:不错不错,拿去用了 THX
:123.138.48.getAccessToken--出现错...
:PostMethod 是怎样的?
:lz 能否将源码借鉴下
今日访问:15
昨日访问:15
本周访问:115
本月访问:236
所有访问:12908
java实现新浪oauth2.0获取用户信息并发表一条微博
发表于3年前( 15:14)&&
阅读(3490)&|&评论()
0人收藏此文章,
刚刚工作……….
工作中用到了新浪微博的oauth , 因为用到的功能不多,并没有用新浪的SDK,都是自己写的,没有考虑大多数的异常处理。
oauth验证过程不再叙述。 用到了struts2。
引导用户到授权界面当用户在网站上点击用新浪微博登陆后的执行过程。
public String authWeiboSignIn()
authorizationURL = "/oauth2/authorize?client_id="+appKEY+"&response_type=code&redirect_uri=callbackURL";
return SUCCESS;
struts2的xml配置
&action name="weiboSinaSignIn" class="com.tech.action.SinaAction"
method="authWeiboSignIn"&
&result name="success" type="redirect"&${authorizationURL}&/result&
用户授权完成后会返回code,这个code是以后所有操作的钥匙,通过code可以获得accessToken和uid ,uid和accessToken就是访问新浪API的凭证。 用户同意授权后,根据redirect_uri可以重新返回。我在redirect_uri中配置了要请求的action,流程就转到了action所配置的方法。 redirect_uri返回的action配置
&action name="weiboLogin" class="com.tech.action.SinaAction"
method="weiboLogin"&
方法中获取请求后的code,让后用http post请求获取accessToken和uid
public String weiboLogin() {
HttpServletRequest request = ServletActionContext.getRequest();
String code = request.getParameter("code");
Map&String, String& token = this.getAccessTokenAndUid(code);
* 获取accestoken和用户在新浪微博的uid
* @param code 获取accessToken的钥匙
private Map&String , String& getAccessTokenAndUid(String code){
String responseDate = "" ;
Map&String , String& token = new HashMap&String, String&();
//本机运行时会报证书错误
/*ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();
Protocol.registerProtocol("https", new Protocol("https", fcty, 443));*/
PostMethod postMethod = new PostMethod("/oauth2/access_token");
postMethod.addParameter("grant_type", "authorization_code");
postMethod.addParameter("code",code);
postMethod.addParameter("redirect_uri","callBackURL");
postMethod.addParameter("client_id",KEY);
postMethod.addParameter("client_secret",appSECRET);
HttpClient client = new HttpClient();
client.executeMethod(postMethod);
responseDate = postMethod.getResponseBodyAsString();
} catch (Exception e) {
e.printStackTrace();
if(!responseDate.equals("") && responseDate.indexOf("access_token") != -1){
JSONObject jsonData = JSONObject.fromObject(responseDate);
token.put("accessToken", (String)jsonData.get("access_token"));
token.put("uid", jsonData.getString("uid"));
现在的map结合中存储了accessToken和uid , 就能取得授权用户的信息了。这里我只需要微博名称和用户的头像地址。
public String weiboLogin() {
HttpServletRequest request = ServletActionContext.getRequest();
String code = request.getParameter("code");
Map&String, String& token = this.getAccessTokenAndUid(code);
Map&String , String& userInfo = this.getUserWeiBoInfo(token);
private Map&String , String& getUserWeiBoInfo(Map&String , String& token){
Map&String , String& userData = new HashMap&String, String&();
String UserInfo = "";
String url = "/2/users/show.json?access_token="+token.get("sinaUid")"&uid="+token.get("sinaAccessToken");
GetMethod getMethod = new GetMethod(url);
HttpClient client = new HttpClient();
client.executeMethod(getMethod);
UserInfo = getMethod.getResponseBodyAsString();
JSONObject jsonData = JSONObject.fromObject(UserInfo);
userData.put("name",jsonData.getString("name").toString() );
userData.put("headImg", jsonData.getString("profile_image_url"));
} catch (Exception e) {
e.printStackTrace();
return userD
在授权用户中发表一篇微博:
public String weiboLogin() {
HttpServletRequest request = ServletActionContext.getRequest();
String code = request.getParameter("code");
Map&String, String& token = this.getAccessTokenAndUid(code);
Map&String , String& userInfo = this.getUserWeiBoInfo(token);
this.shareToSina(token);
private void shareToSina(Map&String , String&) throws IllegalArgumentException, HttpException, IOException
/*ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory();
Protocol.registerProtocol("https", new Protocol("https", fcty, 443));*/
PostMethod postMethod = new PostMethod("/2/statuses/update.json");
postMethod.addParameter("access_token", token.get("sinaAccessToken"));
postMethod.addParameter("status","发表一条微博");
HttpMethodParams param = postMethod.getParams();
param.setContentCharset("UTF-8");
HttpClient client = new HttpClient();
client.executeMethod(postMethod);
postMethod.getResponseBodyAsString();
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读

我要回帖

更多关于 新浪微博获取code 的文章

 

随机推荐