ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:326.89KB ,
资源ID:4957634      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4957634.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android授权登录新浪微博获取用户个人信息汇总.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android授权登录新浪微博获取用户个人信息汇总.docx

1、Android授权登录新浪微博获取用户个人信息汇总Android授权登录新浪微博获取用户个人信息一、准备工作我们都知道,无论是分享到新浪微博,还是获取新浪微博的用户信息,都离不开一样东西,那就是新浪微博的APPID,APPID通过绑定我们应用程序的包名和签名进行识别,可以说它是我们跟新浪微博官方所提供接口进行交互的一个重要令牌,这一点跟QQ、微信接口等访问原理基本是一样的。那么问题来了,APPID到底怎么得到?答案就是你要到新浪微博开放平台点击创建应用后会出现如下图所示页面,在这个页面中你必须要填写你的Android包名和Android签名,包名就是你应用程序AndroidManifest.x

2、ml文件中的package中的字符串,比如你新建了一个名称为“test”的项目,那么你的包名应该是com.example.test了。至于Android签名,你可以在该开放平台下载签名工具apk装到手机,然后打开该apk填写程序包名获取签名,也可以直接在开发工具eclispe中点击Window-Preferences-Android-Build查看,如下图所示,至于其它必要的填写信息,你自己去完善就可以了将所有信息填写完善后我们点击提交审核,注意,只有审核通过的应用才能调用他们提供的API。二、工程准备新建一个工程,包名要跟你上面填写的包名一致。新建完成后下载新浪微博SDK,下载完成后解压,将

3、libs目录下的文件全部拷贝到你的工程libs目录下,将weiboSDKCore_3.1.2.jar包也拷贝到libs目录下,找到AccessTokenKeeper.Java、UsersAPI.java、AbsOpenAPI.java文件并拷贝到你的包中,我把我的工程目录图贴出来,后面我会把整个示例源码放上来。注意上面common中的SinaUserInfo.java是我自己建的,只是用来方便存和取用户信息而已。还有,别忘了在AndroidManifest.xml中添加权限:三、动手写代码几经波折,下面直接进入正题,贴代码1、SinaUserInfo.java(前面说过,这个类非常简单,只是方

4、便存取用户信息而已)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

5、.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文件中,授权登录并获取信息的具体流程是这样子的,首先通过我们之前审核通过的A

6、PPID来实例化IWeiboShareAPI:java view plain copy 在CODE上查看代码片派生到我的代码片weiboShareAPI = WeiboShareSDK.createWeiboAPI(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(Mai

7、nActivity.this, authInfo); ssoHandler.authorize(new AuthListener(); 在授权回调接口当中,我们通过利用onComplete方法中的参数values来解析访问令牌accessToken,并通过AccessTokenKeeper这个类将accessToken保存,这样我们就完成了授权,紧接着我们开了一个线程,实例化UsersAPI并调用show()方法,这个方法有两个参数,由于我们是通过accessToken.getUid()也就是用户ID来获取用户信息的,所以这里的参数类型是long而不是String,如果你不转成long的话,他

8、实际上是通过用户名来访问用户信息的,那么就会出现“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

9、.parseAccessToken(values); / 从Bundle中解析Token String phoneNum = accessToken.getPhoneNum();/ 从这里获取用户输入的 电话号码信息 if (accessToken.isSessionValid() AccessTokenKeeper.writeAccessToken(MainActivity.this, accessToken); / 保存Token Toast.makeText(context, 授权成功, Toast.LENGTH_SHORT) .show(); new Thread(new Runnab

10、le() Override public void run() / TODO Auto-generated method stub UsersAPI usersAPI = new UsersAPI(context, SWB_APP_ID, accessToken); usersAPI.show(Long.valueOf(accessToken.getUid(), new SinaRequestListener(); ).start(); else / 以下几种情况,您会收到 Code: / 1. 当您未在平台上注册的应用程序的包名与签名时; / 2. 当您注册的应用程序包名与签名不正确时; /

11、 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。 String code = values.getString(code); String message = 授权失败; if (!TextUtils.isEmpty(code) message = message + nObtained the code: + code;Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 上面show方法中的第二个参数是新浪微博请求监听回调接口,我们可以在这个接口的onComplete方法中的参数respon中得到

12、返回的json数据,通过解析json数据就可以得到我们想要的新浪微博用户信息啦,到此整个流程也就结束了,以下是请求接口的部分代码。java view plain copy 在CODE上查看代码片派生到我的代码片public class SinaRequestListener implements RequestListener /新浪微博请求接口 Override public void onComplete(String response) / TODO Auto-generated method stub try JSONObject jsonObject = new JSONObject

13、(response); String idStr = jsonObject.getString(idstr);/ 唯一标识符(uid) String name = jsonObject.getString(name);/ 姓名 String avatarHd = jsonObject.getString(avatar_hd);/ 头像 要想授权回调有效,别忘了在Activity中添加如下代码:java view plain copy 在CODE上查看代码片派生到我的代码片 Override protected void onActivityResult(int requestCode, int

14、 resultCode, Intent data) / TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(ssoHandler != null) ssoHandler.authorizeCallBack(requestCode, resultCode, data); 好了,下面直接贴出完整的代码:java view plain copy 在CODE上查看代码片派生到我的代码片import org.json.JSONException; import org.json

15、.JSONObject; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickL

16、istener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import mon.SinaUserInfo; import com.sina.weibo.sdk.api.share.IWeiboShareAPI; import com.sina.weibo.sdk.api.share.WeiboShareSDK; import com.sina.weibo.sdk.auth.AuthInfo; import com.sina.weibo.sdk.auth.

17、Oauth2AccessToken; import com.sina.weibo.sdk.auth.WeiboAuthListener; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.exception.WeiboException; import .RequestListener; public class MainActivity extends Activity implements OnClickListener private Context context; private IWei

18、boShareAPI weiboShareAPI; private final static String SWB_APP_ID = 3802299039; private Button login; private AuthInfo authInfo; private SsoHandler ssoHandler; private Oauth2AccessToken accessToken; private TextView userinfo_tv; private SinaUserInfo userInfo; public static final String SWB_REDIRECT_U

19、RL = public static final String SWB_SCOPE = email,direct_messages_read,direct_messages_write, + friendships_groups_read,friendships_groups_write,statuses_to_me_read, + follow_app_official_microblog, + invitation_write; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedI

20、nstanceState); setContentView(R.layout.activity_main); context = this; weiboShareAPI = WeiboShareSDK.createWeiboAPI(context, SWB_APP_ID); userinfo_tv = (TextView) findViewById(R.id.userinfo_tv); login = (Button) findViewById(R.id.login); login.setOnClickListener(this); Override public void onClick(V

21、iew v) / TODO Auto-generated method stub authInfo = new AuthInfo(context, SWB_APP_ID, SWB_REDIRECT_URL, SWB_SCOPE); ssoHandler = new SsoHandler(MainActivity.this, authInfo); ssoHandler.authorize(new AuthListener(); public class AuthListener implements WeiboAuthListener Override public void onCancel(

22、) / TODO Auto-generated method stub Toast.makeText(context, 授权取消, Toast.LENGTH_LONG).show(); Override public void onComplete(Bundle values) / TODO Auto-generated method stub accessToken = Oauth2AccessToken.parseAccessToken(values); / 从Bundle中解析Token String phoneNum = accessToken.getPhoneNum();/ 从这里获

23、取用户输入的 电话号码信息 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 UsersAPI usersAPI = new Users

24、API(context, SWB_APP_ID, accessToken); usersAPI.show(Long.valueOf(accessToken.getUid(), new SinaRequestListener(); ).start(); else / 以下几种情况,您会收到 / 1. 当您未在平台上注册的应用程序的包名与签名时; / 2. 当您注册的应用程序包名与签名不正确时; / 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。 String code = values.getString(code); String message = 授权失败; i

25、f (!TextUtils.isEmpty(code) message = message + nObtained the code: + code; Toast.makeText(context, message, Toast.LENGTH_LONG).show(); Override public void onWeiboException(WeiboException e) / TODO Auto-generated method stub Toast.makeText(context, Auth exception : + e.getMessage(),Toast.LENGTH_LON

26、G).show(); public Handler handler = new Handler() public void handleMessage(Message msg) if(msg.what = 1) userinfo_tv.setText(用户id:+userInfo.getUid()+n+用户名:+userInfo.getName()+n+用户头像url:+userInfo.getAvatarHd(); ; ; public class SinaRequestListener implements RequestListener /新浪微博请求接口 Override public

27、 void onComplete(String response) / TODO Auto-generated method stub try JSONObject jsonObject = new JSONObject(response); String idStr = jsonObject.getString(idstr);/ 唯一标识符(uid) String name = jsonObject.getString(name);/ 姓名 String avatarHd = jsonObject.getString(avatar_hd);/ 头像 userInfo = new SinaUs

28、erInfo(); userInfo.setUid(idStr); userInfo.setName(name); userInfo.setAvatarHd(avatarHd); Message message = Message.obtain(); message.what = 1; handler.sendMessage(message); catch (JSONException e) / TODO Auto-generated catch block e.printStackTrace(); Override public void onWeiboException(WeiboExce

29、ption e) / TODO Auto-generated method stubToast.makeText(context, Auth exception : + e.getMessage(),Toast.LENGTH_LONG)how(); Log.i(mylog, Auth exception : + e.getMessage(); Override protected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO Auto-generated hod stub super.onActivityResult(requestCode, resultCode, data); if(ssoHandler != null) ssoHandl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1