前期準(zhǔn)備
在微博開(kāi)放平臺(tái)注冊(cè)一個(gè)網(wǎng)站應(yīng)用,微博開(kāi)放平臺(tái)地址如下:
https://open.weibo.com/connect
進(jìn)入正題
①創(chuàng)建一個(gè)登錄頁(yè)面的 Ability
因?yàn)槭褂玫氖蔷W(wǎng)站接入的方式,所以登錄使用 WebView 來(lái)實(shí)現(xiàn)。
登錄頁(yè)布局文件:
<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">
<ohos.agp.components.webengine.WebView
ohos:id="$+id:WebView_weibologin"
ohos:height="match_parent"
ohos:width="match_parent"/>
DirectionalLayout>
②在登錄頁(yè) AbilitySlice 中對(duì) WebView 進(jìn)行設(shè)置。
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_wei_bo_login);
WebViewmyWebView=(WebView)findComponentById(ResourceTable.Id_WebView_weibologin);
myWebView.getWebConfig().setJavaScriptPermit(true);
//自定義WebAgent用于登錄的相關(guān)操作
myWebView.setWebAgent(newWebAgent(){
//isNeedLoadUrl當(dāng)WebView即將打開(kāi)一個(gè)鏈接時(shí)會(huì)調(diào)用此方法
@Override
publicbooleanisNeedLoadUrl(WebViewwebView,ResourceRequestrequest){
//request.getRequestUrl().toString().startsWith("sinaweibo")
//當(dāng)請(qǐng)求鏈接為sinaweibo開(kāi)頭(點(diǎn)擊網(wǎng)頁(yè)上一鍵登錄會(huì)喚起微博客戶(hù)端)時(shí),使用下面的方法喚起微博客戶(hù)端。
if(request.getRequestUrl().toString().startsWith("sinaweibo")){
Intentintent=newIntent();
intent.setAction("android.intent.action.VIEW");
intent.setUri(Uri.parse(request.getRequestUrl().toString()));
intent.addFlags(Intent.FLAG_ABILITY_NEW_MISSION);
startAbility(intent);
returnfalse;
}
//當(dāng)在微博客戶(hù)端授權(quán)后,會(huì)重定向至定義的網(wǎng)址,示例中重定向至https://api.dsttl3.cn/?code=【code的值】,這時(shí)候就可以從鏈接中獲取到code進(jìn)行下一步了。這里把code傳入下個(gè)頁(yè)面
if(request.getRequestUrl().toString().startsWith("https://api.dsttl3.cn)){
Stringcode=request.getRequestUrl().toString().substring(28);
Intentintent=newIntent();
//在intent中帶上code
intent.setParam("code",code);
Operationoperation=newIntent.OperationBuilder()
.withDeviceId("")
.withBundleName("cn.dsttl3.dome.weibologin")
.withAbilityName("cn.dsttl3.dome.weibologin.MyAbility")
.build();
intent.setOperation(operation);
startAbility(intent);
//結(jié)束當(dāng)前Ability
terminateAbility();
}
returntrue;
}
});
//授權(quán)連接,需要自己修改
myWebView.load("https://api.weibo.com/oauth2/authorize?client_id=2593566539&response_type=code&forcelogin=false&scope=all&redirect_uri=https%3A%2F%2Fapi.dsttl3.cn");
}
③獲取到 code 后,在 MyAbility 中獲取微博 token。
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_my);
Texttext=(Text)findComponentById(ResourceTable.Id_text_helloworld);
Stringcode=intent.getStringParam("code");
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
StringYOUR_CLIENT_ID="2593566539";
StringYOUR_CLIENT_SECRET="383fc6262e954e18f5b7efe3c9899284";
StringYOUR_REGISTERED_REDIRECT_URI="https://api.dsttl3.cn";
StringACCESS_TOKEN_URL="https://api.weibo.com/oauth2/access_token";
OkHttpClientclient=newOkHttpClient();
FormBodybody=newFormBody.Builder()
.add("client_id",YOUR_CLIENT_ID)
.add("client_secret",YOUR_CLIENT_SECRET)
.add("grant_type","authorization_code")
.add("redirect_uri",YOUR_REGISTERED_REDIRECT_URI)
.add("code",code).build();
RequestokRequest=newRequest.Builder().url(ACCESS_TOKEN_URL).header("referer",YOUR_REGISTERED_REDIRECT_URI).post(body).build();
Callcall=client.newCall(okRequest);
Responsere=call.execute();
Strings=re.body().string();
Gsongson=newGson();
WeiBoTokenJsonw=gson.fromJson(s,WeiBoTokenJson.class);
getUITaskDispatcher().asyncDispatch(newRunnable(){
@Override
publicvoidrun(){
text.setText("登錄成功:token="+w.getAccess_token());
}
});
}catch(IOExceptione){
e.printStackTrace();
}
}
}).start();
獲取微博 Token 完成。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
webview
+關(guān)注
關(guān)注
0文章
7瀏覽量
3390 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2153瀏覽量
36037
原文標(biāo)題:HarmonyOS微博第三方登錄實(shí)現(xiàn)
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
零基礎(chǔ)入門(mén):用libfota2實(shí)現(xiàn)第三方服務(wù)器FOTA升級(jí)服務(wù)
?即使你是FOTA新手,也能通過(guò)本教程掌握遠(yuǎn)程固件升級(jí)的核心實(shí)現(xiàn)。我們以libfota2為客戶(hù)端核心,結(jié)合自建第三方服務(wù)器,提供一份零基礎(chǔ)可上手的完整FOTA服務(wù)搭建指南。從服務(wù)端部署到設(shè)備端響應(yīng)
CW32W031調(diào)制頻率的話(huà)有第三方軟件工具么?
請(qǐng)問(wèn),CW32W031調(diào)制頻率的話(huà),有第三方軟件工具么?仿真軟件也行
發(fā)表于 01-19 06:54
遠(yuǎn)傳水電表對(duì)接第三方集中器采集器+遠(yuǎn)程抄表系統(tǒng)解決方案
針對(duì)這一痛點(diǎn),我們隆重推出 “遠(yuǎn)傳水電表對(duì)接第三方集中器采集器+遠(yuǎn)程抄表系統(tǒng)”一體化解決方案,致力于打破技術(shù)壁壘,連通數(shù)據(jù)斷點(diǎn),讓您的抄表項(xiàng)目輕松升級(jí),一步到位。
DEKRA德凱獲得沃爾沃汽車(chē)第三方實(shí)驗(yàn)室認(rèn)可資質(zhì)
近日,DEKRA德凱上海實(shí)驗(yàn)室成功通過(guò)沃爾沃汽車(chē)材料工程中心的嚴(yán)格評(píng)審,被正式列入其認(rèn)可的第三方實(shí)驗(yàn)室名單。
第三方電商數(shù)據(jù) API 數(shù)據(jù)來(lái)源深度解析:合規(guī)與穩(wěn)定背后的核心邏輯
本文揭秘第三方電商數(shù)據(jù)API的底層邏輯:通過(guò)官方授權(quán)、生態(tài)共享與合規(guī)采集三重來(lái)源,結(jié)合嚴(yán)格清洗校驗(yàn),確保數(shù)據(jù)穩(wěn)定、合規(guī)、高質(zhì)。企業(yè)選型應(yīng)關(guān)注來(lái)源合法性與場(chǎng)景匹配度,避開(kāi)數(shù)據(jù)陷阱,實(shí)現(xiàn)真正數(shù)據(jù)驅(qū)動(dòng)增長(zhǎng)
SEGGER Ozone調(diào)試器支持第三方調(diào)試工具
SEGGER強(qiáng)大的Ozone調(diào)試器和性能分析器,長(zhǎng)期以來(lái)一直深受J-Link和J-Trace用戶(hù)的信任,現(xiàn)在可以支持第三方調(diào)試工具了。
電子測(cè)試行業(yè)中的第三方檢測(cè)機(jī)構(gòu)如何解決平臺(tái)靈活度低,維護(hù)困難等痛點(diǎn)問(wèn)題?
在競(jìng)爭(zhēng)激烈的市場(chǎng)環(huán)境中,第三方檢測(cè)機(jī)構(gòu)面臨著諸多挑戰(zhàn),尤其是在來(lái)料測(cè)試環(huán)節(jié)。某權(quán)威第三方檢測(cè)機(jī)構(gòu)就曾深陷困境,他們一方面要應(yīng)對(duì)產(chǎn)品不確定性高與系統(tǒng)固化嚴(yán)重的矛盾,另一方面還需解決已有系
如何集成第三方支付API到電商網(wǎng)站
? 在電商網(wǎng)站中,集成第三方支付API是確保交易安全、提升用戶(hù)體驗(yàn)的關(guān)鍵步驟。本文將逐步指導(dǎo)您完成整個(gè)流程,從選擇支付提供商到上線(xiàn)后的監(jiān)控。文章結(jié)構(gòu)清晰,包含代碼示例和實(shí)用建議,幫助您高效實(shí)現(xiàn)支付
天合跟蹤獲得DNV第三方風(fēng)洞測(cè)試審查報(bào)告
近日, 天合跟蹤獲得DNV頒發(fā)的中國(guó)支架行業(yè)首張風(fēng)洞實(shí)驗(yàn)第三方審查報(bào)告。該風(fēng)洞報(bào)告由天合跟蹤與同濟(jì)大學(xué)合作,針對(duì)開(kāi)拓者1P跟蹤支架進(jìn)行了全新的剛性模型測(cè)壓試驗(yàn)和先進(jìn)動(dòng)力學(xué)分析研究,并由DNV進(jìn)行獨(dú)立
使用 Claroty SRA 優(yōu)化第三方 OT 遠(yuǎn)程訪(fǎng)問(wèn)
第三方,如原始設(shè)備制造商 (OEM) 技術(shù)員和維護(hù)承包商,是確保 OT 環(huán)境可用性、完整性和安全性的關(guān)鍵。負(fù)責(zé)服務(wù) OT 資產(chǎn)的第三方經(jīng)常遠(yuǎn)程工作。這意味著,他們會(huì)通過(guò)無(wú)數(shù)廣泛使用的解決方案遠(yuǎn)程連接
鈦和集團(tuán)榮獲零跑汽車(chē)第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可
近期,鈦和集團(tuán)順利通過(guò)了浙江零跑科技股份有限公司(以下簡(jiǎn)稱(chēng)“零跑汽車(chē)”)對(duì)第三方實(shí)驗(yàn)室的能力驗(yàn)證及資質(zhì)審核,助力零跑汽車(chē)實(shí)現(xiàn)“成為值得尊敬的世界級(jí)智能電動(dòng)車(chē)企”的品牌愿景。
鈦和集團(tuán)榮獲吉利汽車(chē)第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可
近期,鈦和集團(tuán)汽車(chē)事業(yè)部順利通過(guò)了浙江吉利控股集團(tuán)有限公司(以下簡(jiǎn)稱(chēng)“吉利汽車(chē)”)對(duì)外部實(shí)驗(yàn)室的能力驗(yàn)證及資質(zhì)審核,并獲得了第三方實(shí)驗(yàn)室認(rèn)可證書(shū),助力吉利汽車(chē)實(shí)現(xiàn)“讓世界充滿(mǎn)吉利”的品牌愿景。
SGS榮獲比亞迪乘用車(chē)第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可證書(shū)
近日,國(guó)際公認(rèn)的測(cè)試、檢驗(yàn)和認(rèn)證機(jī)構(gòu)SGS(以下簡(jiǎn)稱(chēng):SGS)位于重慶的標(biāo)瑞新能源實(shí)驗(yàn)室(以下簡(jiǎn)稱(chēng):SGS-CEC)榮獲比亞迪乘用車(chē)實(shí)驗(yàn)室認(rèn)可委員會(huì)(以下簡(jiǎn)稱(chēng):比亞迪)頒發(fā)的“乘用車(chē)第三方實(shí)驗(yàn)室資質(zhì)認(rèn)可證書(shū)”。
技術(shù)分享 | RK3568編譯第三方驅(qū)動(dòng)
這里就以我司IAC-RK3568-Kit開(kāi)發(fā)板為例,分享如何在當(dāng)前內(nèi)核下編譯第三方驅(qū)動(dòng)模塊。我們需要向模塊供應(yīng)商拿到一份適配Linux的驅(qū)動(dòng)源碼,這里主要是要向供應(yīng)
HarmonyOS微博第三方登錄實(shí)現(xiàn)(內(nèi)附代碼)
評(píng)論