日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

8.腾讯微博Android客户端开发——自动获取验证码(2)

發布時間:2025/7/14 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8.腾讯微博Android客户端开发——自动获取验证码(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一節給大家講解通過調用android系統自帶的瀏覽器進行授權認證的,使用該種方式能很容易的完成認證,但是該種方式有個弊端,也就是如果使用第三方的瀏覽器如UC、天天等,輸入完QQ賬號信息點擊“授權”后并不能再次跳轉到MainActivity,導致我們的認證失敗。這個問題應該是非常嚴重的問題,因為大部分用戶都會選擇第三方的瀏覽器作為默認的瀏覽器。本次給大家講解自動獲取驗證碼的第二種解決方案,克服上一種方法的缺陷。

第二種解決方案的主角就是我們的WevView控件,我們可以使用WebView控件來進行瀏覽器的操作,而不使用系統或者第三方的瀏覽器。

1.首先創建一個Activity,命名為WebViewActivity,該Activity種只包含一個WevView控件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
>
<WebView
android:id="@+id/web"
android:layout_height
="wrap_content"
android:layout_width
="wrap_content"
/>
</ScrollView>

2.MainActivity種添加一個Button,用于啟動WebViewActivity

String url = "https://open.t.qq.com/cgi-bin/authorize";
Weibo weibo
= new Weibo();
//修改getRequestToken()方法,返回結果為HashMap
Map<String, String> map = weibo.getRequestToken();
//獲取oauth_token
oauthToken = map.get("oauth_token");
oauthTokenSecret
= map.get("oauth_token_secret");
Log.i(TAG,
"Request Token="+oauthToken);
Log.i(TAG,
"Request Token Secret="+oauthTokenSecret);
//有些時候獲取oauth_token失敗,因此再次獲取
if (TextUtil.isEmpty(oauthToken))
{
getVerifier();
return;
}
//構造請求的URL
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(url);
urlBuilder.append(
"?");
urlBuilder.append(
"oauth_token="+oauthToken);
Intent intent
= new Intent(MainActivity.this,WebViewActivity.class);
Bundle bundle
=new Bundle();
bundle.putString(
"url", urlBuilder.toString());
intent.putExtras(bundle);
//啟動WebViewActivity
startActivity(intent);

 3.WebViewActivityonCreate添加如下代碼,進行瀏覽器的初始化:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
WebView webView
= (WebView) findViewById(R.id.web);
Intent intent
= this.getIntent();
if (!intent.equals(null))
{
Bundle bundle
= intent.getExtras();
if (bundle != null)
{
if (bundle.containsKey("url"))
{
String url
= bundle.getString("url");
WebSettings webSettings
= webView.getSettings();
// 支持JavScript
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(
true);
webView.requestFocus();
webView.loadUrl(url);
Log.i(TAG,
"WebView Starting....");
}
}
}
}

此時如果我們運行模擬器,點擊按鈕啟動WebViewActivity按鈕后,運行效果和啟動瀏覽器差不多,我們輸入QQ賬戶信息,點擊“授權”,如果callback為空,則Activity會顯示授權碼。

4.下面我們需要處理的就是如何自動獲取授權碼。我們知道WebView是支持JavaScript,我們可以通過JavaScript進行授權碼的獲去,在onCreate()方法中添加如下代碼

//綁定java對象到JavaScript中,這樣就能在JavaScript中調用java對象,實現通信。
//這種方法第一個參數就是java對象,第二個參數表示java對象的別名,在JavaScript中使用
webView.addJavascriptInterface(new JavaScriptInterface(), "Methods");
WebViewClient client
= new WebViewClient()
{
/**
* 回調方法,當頁面加載完畢后執行
*/
@Override
public void onPageFinished(WebView view, String url)
{
Log.i(TAG,
"WebView onPageFinished");
//執行獲取授權碼的JavaScript
view.loadUrl("javascript:window.Methods.getHTML('<head>'+document.getElementsByTagName('body')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
}
};
webView.setWebViewClient(client);
其中JavaScriptInterface類是進行js處理的類:

class JavaScriptInterface
{
private static final String TAG = "MainActivity";
public void getHTML(String html)
{
Log.i(TAG, html);
String verifier
= getVerifier(html);
if (!TextUtil.isEmpty(verifier))
{
Log.i(TAG,
"verifier:"+verifier);
}
}

public String getVerifier(String html)
{
String ret
= "";
String regEx
= "授權碼:[0-9]{6}";
Pattern p
= Pattern.compile(regEx);
Matcher m
= p.matcher(html);
boolean result = m.find();
if (result)
{
ret
= m.group(0).substring(4);
}
return ret;
}
}

getVerifier()方法是通過正則表達式進行授權碼的查找,該正則表達式是根據騰訊微博開放平臺返回驗證碼的html源文件進行設置:

<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport"
content
="minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0, width=device-width, user-scalable=no">
<title></title>
<link href="/style/oauth/mobel.css" rel="stylesheet" type="text/css">
<style>
*
{
TEXT-DECORATION
: none;
}
</style>
<script type="text/javascript">
var step = 0;
var sub = 0;
function callback(){
}
function cl(){
sub
= 0;
document.getElementById(
'errCode').innerHTML = '你拒絕了授權此應用訪問你的騰訊微博帳戶,將不能使用此應用功能。';
document.getElementById(
'errCode').style.display = 'block';
var c = document.getElementById('conter');
var ql = document.getElementById('loginform');
c.removeChild(ql);
}
function changeimg(){
var i = document.getElementById('imgVerify');
i.src
= ".jpg?d="+step;
step
++;
/*
i.innerHTML = '';
window.setTimeout(function(){i.innerHTML = '<img id="imgVerify" width="130" height="53" src=".jpg" οnclick="changeimg();" />';},200);
*/
}
function subForm(){
var u = document.getElementById('u');
var p = document.getElementById('p');
if(u.value != '' && p.value!=''){
document.getElementById(
'login_btn').disabled= true;
}
else{
return false;
}
}
function subForm1(){
var u = document.getElementById('u');
var p = document.getElementById('p');
var v = document.getElementById('v');
if(u.value != '' && p.value!='' && v.value != ''){
document.getElementById(
'login_btn').disabled= true;
}
else{
return false;
}
}
</script>
</head>
<body id="body">
<div id="header">
<a href="http://open.t.qq.com"></a>
<p></p>
</div>
<div id="headerTxt">
<h1>
授權使用騰訊微博帳號
</h1>
<cite>授權后 <span>Android開發</span> 將可訪問并使用你的微博帳號</cite>
</div>
<div id="conter">
<ul>
<li>
授權碼:240547
</li>
</ul>
</div>
<div id="info">
<p>
騰訊官方授權頁面不允許第三方內嵌或偽造
</p>
<p>
授權頁面地址為http://open.t.qq.com開頭。
</p>
<p>
授權后,在第三方網站的活動應繼續遵守《
<a
href="http://ti.3g.qq.com/g/s?sid=AUV9TkhR9XziFokSOXQRypk1&r=252180&aid=pno"
target
="_blank">騰訊QQ用戶服務條款</a>》。
</p>
</div>
<div id="footer">
? 2011 Tencent Inc.
</div>
<script type="text/javascript">
var g_btrace_zhibo = new Image(1,1);
var _u = 'http://btrace.qq.com/collect?ftime=1310183089&sIp=-1266685874&iQQ=0&sBiz=moauth&sOp=inter&iSta=0&iTy=424&iFlow=0&t=3&c=0&oa=1200b4a5a24f45509478a4a809d75495&r=7';
g_btrace_zhibo.src
= _u;
</script>
</body>
</head>

至此我們就完成了如何通過WebView控件獲取驗證碼的方法,解決了上一節的缺陷。


?

課程下載地址:http://u.115.com/file/e60px8bk

文檔下載地址:http://download.csdn.net/source/3437652

源碼下載地址:http://u.115.com/file/aq2vc2re






?

轉載于:https://www.cnblogs.com/coolszy/archive/2011/07/12/2104688.html

總結

以上是生活随笔為你收集整理的8.腾讯微博Android客户端开发——自动获取验证码(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美混交群体交 | 日本在线一 | 91网站观看 | 男女做爰猛烈刺激 | 香蕉视频毛片 | 1769国产精品视频 | 男生插女生视频在线观看 | 黄色片怎么看 | 91综合视频| a级片免费看 | 国产婷婷一区二区三区久久 | 成人欧美一区二区三区在线播放 | 久综合网 | 日韩一级理论片 | 日本福利视频导航 | 成人av在线看 | 中文字幕一区二区三区乱码在线 | 深夜激情影院 | 又黄又爽的视频在线观看 | 日本黄色免费 | 色婷婷综合五月 | 亚洲av色一区二区三区精品 | 超碰超碰超碰超碰超碰 | 国产chinesehd天美传媒 | 四川话毛片少妇免费看 | 极品少妇xxxx精品少妇 | 露胸app | 中文字幕免费播放 | 高清国产一区二区三区四区五区 | 国产91综合一区在线观看 | 伊人逼逼 | 国产精品1区2区3区4区 | 久久成人a毛片免费观看网站 | 日本美女动态图 | 99在线成人精品视频 | 国产成人手机视频 | 99精品视频在线观看 | 亚洲伦理影院 | 好色视频tv| a黄色大片 | 欧色av | 成人亚洲区| 亚洲国产日韩在线 | 色亚洲成人 | 欧美日本一道 | 一区二区三区蜜桃 | 一区二区在线影院 | 久久国产乱子伦免费精品 | 欧美一级少妇 | 福利小视频在线 | 一区二区三区国产在线观看 | 成人a√ | 国产精品久久久久久久免费 | 麻豆网站免费观看 | 色片在线免费观看 | 日韩欧美自拍偷拍 | 午夜老湿机 | 特级黄毛片 | 天天干狠狠干 | 亚洲综合免费观看高清完整版在线 | 日韩毛片 | 182av| 阿v天堂网 | 亚洲做受高潮无遮挡 | 国产女人在线视频 | 91麻豆视频在线观看 | 欧美黄页 | 阿v天堂2018 俄罗斯丰满熟妇hd av色吧 | 我们的生活第五季在线观看免费 | 国产午夜一级一片免费播放 | 国产精品www| 亚洲成人自拍网 | 亚洲激情区 | 999久久久久久 | 亚洲成人一二三区 | 天天操夜夜拍 | 一区二区三区精品免费视频 | 久久久久人妻一区二区三区 | 强迫凌虐淫辱の牝奴在线观看 | 99久久精品久久久久久清纯 | 8x8ⅹ8成人免费视频观看 | 国产av国片偷人妻麻豆 | 欲涩漫入口免费网站 | 黄色三极片 | 国产精品99久久久久久久久久久久 | 国产激情av一区二区三区 | 黑人操亚洲女人 | 在线观看免费小视频 | 去毛片 | 亚洲av无码一区二区乱子伦as | 久久露脸国语精品国产91 | 一级片黄色 | 欧美精品成人一区二区在线观看 | 欧美一级大片在线观看 | 国产真人无码作爱视频免费 | 亚洲永久免费精品 | 国产又粗又猛又爽又黄91 | 911国产在线 | 成人免费毛片xxx |