本课主要讲解了在Android 中如何完成用户OAuth认证。
微博操作的流程图:
点击了开始后:
首先是获取新浪微博的OAuth授权(WebViewActivity.java):
package haiyang.project.iweibo.ui;
import haiyang.project.iweibo.R;
import haiyang.project.iweibo.util.AuthUtil;
import haiyang.project.iweibo.util.JavascriptInterface;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
/*
* 新浪微博OAuth授权页面
*/
public class WebViewActivity extends Activity{
private WebView webView;
private ProgressDialog progressDialog;
private static final int CLOSE_DLG=1;
private Handler handler;
String url=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.webview);
url=AuthUtil.getAuthorizationURL();
if(url==null){
Toast.makeText(this, R.string.auth_url_empty, 3000).show();
return;
}
init();
load(url,webView);
handler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==CLOSE_DLG){
progressDialog.dismiss();
}
};
};
}
public void init(){
if(progressDialog==null){
progressDialog=new ProgressDialog(this);
}
progressDialog.setMessage("正在加载");
progressDialog.show();
webView=(WebView) this.findViewById(R.id.wv_oauth);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavascriptInterface(), "Methods");
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
load(url,webView);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
if(url.equals("http://api.t.sina.com.cn/oauth/authorize")){
String load="javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>')";
view.loadUrl(load);
Intent intent=new Intent(WebViewActivity.this,AccessTokenActivity.class);
startActivity(intent);
}
super.onPageFinished(view, url);
}
});
webView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress==100){
handler.sendEmptyMessage(CLOSE_DLG);
}
super.onProgressChanged(view, newProgress);
}
});
}
public void load(final String url,final WebView view){
if(url==null||"".equals(url)){
return;
}
new Thread(){
public void run() {
view.loadUrl(url);
}
}.start();
}
}
获取授权URL(AuthUtil.java)
package haiyang.project.iweibo.util;
import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;
public class AuthUtil {
private static Weibo weibo;
private static RequestToken requestToken;
static{
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
weibo=new Weibo();
}
/**
* 获取授权URL
* @return
*/
public static String getAuthorizationURL(){
try {
requestToken=weibo.getOAuthRequestToken();
return requestToken.getAuthorizationURL();
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void getAccessToken(String pin){
try {
AccessToken accessToken=requestToken.getAccessToken(pin);
System.out.println("Access token: "+ accessToken.getToken());
System.out.println("Access token secret: "+ accessToken.getTokenSecret());
System.out.println("userID: "+accessToken.getUserId());
} catch (WeiboException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
获取PIN值
package haiyang.project.iweibo.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 获取PIN值
* @author Administrator
*
*/
public class JavascriptInterface {
//授权码
public static String PIN=null;
public void getPin(String html){
String pin=null;
String reg="[0-9]{6}";
Pattern pattern=Pattern.compile(reg);
Matcher matcher=pattern.matcher(html);
if(matcher.find()){//find each match in turn
pin=matcher.group(0);//Access a submatch group
}
PIN=pin;
}
}
获取AccessToken
package haiyang.project.iweibo.ui;
import haiyang.project.iweibo.util.AuthUtil;
import haiyang.project.iweibo.util.JavascriptInterface;
import android.app.Activity;
import android.os.Bundle;
public class AccessTokenActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
String pin=JavascriptInterface.PIN;
AuthUtil.getAccessToken(pin);
super.onCreate(savedInstanceState);
}
}
分享到:
相关推荐
教程名称:Android平台新浪微博开发实战视频教程(10集)教程目录:【】Android项目_-6(上)【】Android项目_新浪微博-4(上)【】Android项目_新浪微博Android客户端开发ppt【】Android项目_新浪微博OAuth认证-4(下)...
一个完整的新浪微博客户端android版OAuth认证 开发我的新浪微博客户端-大图浏览以及保存篇 开发我的新浪微博客户端-阅读微博功能篇 开发我的新浪微博客户端-阅读微博UI篇 开发我的新浪微博客户端-用户首页面功能篇 ...
本项目是一套基于安卓的新浪微博项目源码,是一个毕业设计作品,可以正常使用新浪微博帐号登录,登录以后已经不能正常显示数据因为微博api的变化导致数据获取失败了,本项目还是基于微博的SDK 1.0版本开发的。...
从这个星期开始,准备拿新浪微博开放平台做个实践,开发一个功能简单的android客户端,会尽可能的完善功能。 上图是这个客户端的主要界面。今天增加的功能。 1.简单的样式和皮肤,只是添加了按钮。 运行的系统是...
Android手机上的新浪微博客户端程序Java源码下载,可了解到android中的域名获取等操作,http操作,发微博的作者操作,sqlite操作和微博浏览显示操作,包括了界面到数据库和网络较综合的操作技巧。包括使用sqlite创建...
这是用android开发的一个完整的新浪微博客户端,从Oauth认证开始,每一步都有详细的代码说明和讲解。是学习android开发的很好的例子。
一个完整的新浪微博客户端android版OAuth认证示例,值得参考的
android客户端OAuth2认证实例
3.新浪微博SDK和腾讯微博SDK 4.HMAC加密算法 5.SQLite数据库相关操作 6.字符串处理,表情识别 7.JSON解析,XML解析:超链接解析,时间解析等 8.Android UI:样式文件,布局 9.异步加载图片,异步处理数据,多...
这个微博客户端中用到得一些知识点。...15:腾讯Oauth认证的使用(新浪的,人人的,淘宝的开放API也是基于这个的,版本不同可能) 16:ViewHolder以及LayoutInflater等的使用 17:腾讯API的调用与封装
基于Android系统的移动微博集成交互平台的设计与实现,用户通过手机或者PC来向微博开放平台服务器发送请求,微博服务器接收请求,并且返回XML格式或者JSON格式的数据给客户端。也就是说发送和接收都是基于字符流的,...
YiBo微博是一款专为Android用户打造的聚合型微博客户端,完美支持新浪、腾讯、搜狐、网易以及Twitter五大微博平台,界面清爽,使用简单,支持多账户跨平台同步发布与分享,为您带来不一样的使用体验。软件功能1. ...
是一个非官方的ava 客户端开发包,使您可以轻松在你的应用中集成sina的服务:100% 纯Java,支持 Android 平台, 不依赖第三方开发包, 内建 OAuth 支持
新浪微博Android平台SDK(SoftwareDevelopmentKit)为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,API(Application ProgrammingInterface)调用过程。并可以实现分享到微博的...
本项目是一款专为Android用户打造的聚合型微博客户端,下面是官方对本项目功能的一些介绍: 一键同步所有帐号,支持新浪、腾讯、搜狐、网易和饭否微博平台; 即拍即传,方便的拍照功能,记录生活点滴,享受快乐微博;...
本项目是一款专为Android用户打造的聚合型微博客户端,下面是官方对本项目功能的一些介绍: 一键同步所有帐号,支持新浪、腾讯、搜狐、网易和饭否微博平台; 即拍即传,方便的拍照功能,记录生活点滴,享受快乐...
新浪微博Android 客户端1、微博软件主要实现的功能 1.1、新浪微博 Oauth 认证 1.2、新浪微博 获取微博列表 1.3、新浪微博 发表微博 1.4、新浪微博 评论微博 1.5、新浪微博 转发微博 2、Oauth开放平台认证过程!...
授权 目前支持 微信/QQ/新浪微博,客户端只需要配置APPID(新浪微博) 分享 目前支持 微信(会话/朋友圈/收藏),QQ/QZone,新浪微博 支付 目前支持 支付宝/微信支付 对于授权与分享,客户端不用配置APPSECRET,只需要要...
一个完整的新浪微博客户端android版OAuth认证示例 超爽的android抽屉效果 65个Android实例教程汇总 基本控件及基本动画效果dem 2011android面试题目及其答案大全.rar Android面试题集锦 (陆续更新)(最新2012-6-18...