Android授权登录新浪微博获取用户个人信息
一、准备工作
我们都知道,无论是分享到新浪微博,还是获取新浪微博的用户信息,都离不开一样东西,那就是新浪微博的APPID,APPID通过绑定我们应用程序的包名和签名进行识别,可以说它是我们跟新浪微博官方所提供接口进行交互的一个重要令牌,这一点跟QQ、接口等访问原理基本是一样的。那么问题来了,APPID到底怎么得到?答案就是你要到新浪微博开放平台open.weibo/注册一个帐号,填写并创建你的应用。如下图所示:
点击创建应用后会出现如下图所示页面,在这个页面中你必须要填写你的Android包名和Android签名,包名就是你应用程序l文件中的package中的字符串,比如你新建了一个名称为“test”的项目,那么你的包名应该是st了。至于Android签名,你可以在该开放平台下载签名工具apk装到手机,然后打开该apk填写程序包名获取签名,也可以直接在开发工具eclispe中点击Window->Preferences->Android->Build查看,如下图所示,至于其它必要的填写信息,你自己去完善就可以了
将所有信息填写完善后我们点击提交审核,注意,只有审核通过的应用才能调用他们提供的API。
二、工程准备美国保健品排名
新建一个工程,包名要跟你上面填写的包名一致。新建完成后下载新浪微博SDK,下载完成后解压,将libs目录下的文件全部拷贝到你的工程libs目录下,将weiboSDKCore_3.1.2.jar包也拷贝到libs目录下,到AccessTokenKeeper.Java、UsersAPI.java、AbsOpenAPI.java文件并拷贝到你的包中,我把我的工程目录图贴出来,后面我会把整个示例源码放上来。
注意上面common中的SinaUserInfo.java是我自己建的,只是用来方便存和取用户信息而已。还有,别忘了在l中添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
三、动手写代码
几经波折,下面直接进入正题,贴代码
1、SinaUserInfo.java(前面说过,这个类非常简单,只是方便存取用户信息而已)
[java] view plain copy 在CODE上查看代码片派生到我的代码片
public class SinaUserInfo {
private String uid;//用户ID
private String name;//用户昵称
private String avatarHd;//用户头像url
public SinaUserInfo() {
super();
// TODO Auto-generated constructor stub
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAvatarHd() {
return avatarHd;
}
public void setAvatarHd(String avatarHd) {
this.avatarHd = avatarHd; 水煮鱼的做法图解
}
}
2.MainActivity.java(这个是核心,先分步讲解,后面直接贴出完整代码)
在这个java文件中,授权登录并获取信息的具体流程是这样子的,首先通过我们之前审核通过的APPID来实例化IWeiboShareAPI:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
weiboShareAPI = ateWeiboAPI(context, SWB_APP_ID);
然后获取OAuth协议信息,并设置授权回调接口:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
authInfo = new AuthInfo(context, SWB_APP_ID, SWB_REDIRECT_URL, SWB_SCOPE);
虎皮兰怎么养 ssoHandler = new SsoHandler(MainActivity.this, authInfo);
ssoHandler.authorize(new AuthListener());
在授权回调接口当中,我们通过利用onComplete方法中的参数values来解析访问令牌accessToken,并通过AccessTokenKeeper这个类将accessToken保存,这样我们就完成了授权,紧接着我们开了一个线程,实例化UsersAPI并调用show()方法,这个方法有两个参数,由于我们是通过Uid()也就是用户ID来获取用户信息的,所以这里的参数类型是long而不是String,如果你不转成long的话,他实际上是通过用户名来访问用户信息的,那么就会出现“com.weibo.sdk.android.WeiboException: {"error":"User does not exists!","error_code":20003,"request":"/2/users/show.json"}”,也就是用户不存在的现象。
[java] view plain copy 在CODE上查看代码片派生到我的代码片
@Override
public void onComplete(Bundle values) {
// TODO Auto-generated method stub
accessToken = Oauth2AccessToken.parseAccessToken(values); // 从Bundle中解析Token
String phoneNum = PhoneNum();// 从这里获取用户输入的 电话号码信息
if (accessToken.isSessionValid()) {
电脑游戏配置 AccessTokenKeeper.writeAccessToken(MainActivity.this, accessToken); // 保存Token
Toast.makeText(context, "授权成功", Toast.LENGTH_SHORT)
.show();
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
qq名网 UsersAPI usersAPI = new UsersAPI(context, SWB_APP_ID, accessToken);
usersAPI.show(Long.Uid()), new SinaRequestListe
ner());
}
}).start();
}else{
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
String code = String("code");
网络游戏 排行榜String message = "授权失败";
if (!TextUtils.isEmpty(code)) {
message = message + "\nObtained the code: " + code;}Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}
上面show方法中的第二个参数是新浪微博请求监听回调接口,我们可以在这个接口的onComplete方法中的参数respon中得到返回的json数据,
通过解析json数据就可以得到我们想要的新浪微博用户信息啦,到此整个流程也就结束了,以下是请求接口的部分代码。
[java] view plain copy 在CODE上查看代码片派生到我的代码片
public class SinaRequestListener implements RequestListener{ //新浪微博请求接口
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论