android 新浪微博授权登录界面,android 第三方登录---新浪微博

官方demo是依赖的方式

79114bbc7cf900e0e988be5a9d9f948b.png

115b6929f2465b46d8b3b81ea100f2c2.png

我是把包都弄到自己项目里了,这里不多说了

当然别忘了设置你的应用,不设置的话后边会出问题

b368c28f5dea55d6388f5a4cfd471c33.png

1,AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个

android:name= "com.sina.weibo.sdk.component.WeiboSdkBrowser"

android:configChanges= "keyboardHidden|orientation"

android:exported= "false"

android:windowSoftInputMode="adjustResize" >

2,java调用

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 void weibo(){

// 获取当前已保存过的 Token

Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);

// 快速授权时,请不要传入 SCOPE,否则可能会授权不成功

//11111111换成你自己的app key,第二个就是之前设置那个回调页

AuthInfo mAuthInfo = new AuthInfo(this,"11111111","https://api.weibo.com/oauth2/default.html", SCOPE);

mSsoHandler = new SsoHandler(LoginActivity.this, mAuthInfo);

//Web---网页输入账号密码

//mSsoHandler.authorizeWeb(new AuthListener());

//sso---客户端

mSsoHandler. authorizeClientSso(new AuthListener());

//all In one先调用客户端,如果没有客户端就调用web

mSsoHandler. authorize(new AuthListener());

}

监听--从demo里抠出来的

/**

* 微博认证授权回调类。

* 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 {@link SsoHandler#authorizeCallBack} 后

*    该回调才会被执行。

* 2. 非 SSO 授权时,当授权结束后,该回调就会被执行。

* 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 SharedPreferences 中。

*/

class AuthListener implements WeiboAuthListener {

@Override

public void onComplete(Bundle values) {

// 从 Bundle 中解析 Token

mAccessToken = Oauth2AccessToken.parseAccessToken(values);

//从这里获取用户输入的 电话号码信息

String  phoneNum =  mAccessToken.getPhoneNum();

if (mAccessToken.isSessionValid()) {

// 显示 Token

// updateTokenView(false);

// 保存 Token 到 SharedPreferences

AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);

Toast.makeText(LoginActivity.this,"授权成功", Toast.LENGTH_SHORT).show();

//打印信息

String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(

new java.util.Date(mAccessToken.getExpiresTime()));

String format = "Token:%1$s \\n有效期:%2$s";

Log.i("授权成功","信息111:"+String.format(format, mAccessToken.getToken(), date));

String message = String.format(format, mAccessToken.getToken(), date);

Log.i("授权成功","信息222:"+message);

if (true) {

message = "Token 仍在有效期内,无需再次登录。"+ "\n" + message;

}

Log.i("授权成功","信息333:"+message);

} else {

// 以下几种情况,您会收到 Code:

// 1. 当您未在平台上注册的应用程序的包名与签名时;

// 2. 当您注册的应用程序包名与签名不正确时;

// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。

String code = values.getString("code");

String message = "授权失败";

if (!TextUtils.isEmpty(code)) {

message = message + "\nObtained the code: " + code;

}

Toast.makeText(LoginActivity.this, message, Toast.LENGTH_LONG).show();

}

}

@Override

public void onCancel() {

Toast.makeText(LoginActivity.this,"取消", Toast.LENGTH_LONG).show();

}

public void onWeiboException(WeiboException e) {

Toast.makeText(LoginActivity.this,

"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();

}

}

回调---和之前QQ的一样,不能少的

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == Constants.ACTIVITY_OK){

// SSO 授权回调

// 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResults

if (mSsoHandler != null) {

Log.i("新浪微博登陆返回","返回");

//不能少

mSsoHandler.authorizeCallBack(requestCode, resultCode, data);

}

}

super.onActivityResult(requestCode, resultCode, data);

}

这样授权就有了,下边就是获取授权用户的信息了

3,利用Oauth2AccessToken获取信息

// 获取用户信息接口

//mAccessToken可以是你之前授权获取的那个,也可以

// 获取当前已保存过的 Token

//Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);

UsersAPI mUsersAPI = new UsersAPI(LoginActivity.this, "你的APP_KEY", mAccessToken);

long uid = Long.parseLong(mAccessToken.getUid());

mUsersAPI.show(uid, mListener);

监听

/**

* 微博 OpenAPI 回调接口。

*/

private RequestListener mListener = new RequestListener() {

@Override

public void onComplete(String response) {

if (!TextUtils.isEmpty(response)) {

//LogUtil.i(TAG, response);

// 调用 User#parse 将JSON串解析成User对象

User user = User.parse(response);

if (user != null) {

Toast.makeText(LoginActivity.this,

"获取User信息成功,用户昵称:" + user.screen_name,

Toast.LENGTH_LONG).show();

} else {

Toast.makeText(LoginActivity.this, response, Toast.LENGTH_LONG).show();

}

}

}

@Override

public void onWeiboException(WeiboException e) {

//LogUtil.e(TAG, e.getMessage());

ErrorInfo info = ErrorInfo.parse(e.getMessage());

Toast.makeText(LoginActivity.this, info.toString(), Toast.LENGTH_LONG).show();

}

};

好了,这样就有了。基本上都是从demo里直接拿出来的

这些是从demo直接拿出来的

aa74192f27d08ad6498d10a7a01c184c.png

WeiboSDK

a739eba54ae87381d4c272c9799d67c3.png

WeiboSDKDemo

f472e49af0245018d1be6fbc66a39777.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值