前期准备
在微博开放平台注册一个网站应用,微博开放平台地址如下:
https://open.weibo.com/connect
进入正题
①创建一个登录页面的 Ability
因为使用的是网站接入的方式,所以登录使用 WebView 来实现。
登录页布局文件:
<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>
②在登录页 AbilitySlice 中对 WebView 进行设置。
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用于登录的相关操作
myWebView.setWebAgent(newWebAgent(){
//isNeedLoadUrl当WebView即将打开一个链接时会调用此方法
@Override
publicbooleanisNeedLoadUrl(WebViewwebView,ResourceRequestrequest){
//request.getRequestUrl().toString().startsWith("sinaweibo")
//当请求链接为sinaweibo开头(点击网页上一键登录会唤起微博客户端)时,使用下面的方法唤起微博客户端。
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;
}
//当在微博客户端授权后,会重定向至定义的网址,示例中重定向至https://api.dsttl3.cn/?code=【code的值】,这时候就可以从链接中获取到code进行下一步了。这里把code传入下个页面
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);
//结束当前Ability
terminateAbility();
}
returntrue;
}
});
//授权连接,需要自己修改
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 完成。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
webview
+关注
关注
0文章
7浏览量
3363 -
HarmonyOS
+关注
关注
80文章
2147浏览量
35624
原文标题:HarmonyOS微博第三方登录实现
文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
DEKRA德凯获得沃尔沃汽车第三方实验室认可资质
近日,DEKRA德凯上海实验室成功通过沃尔沃汽车材料工程中心的严格评审,被正式列入其认可的第三方实验室名单。
第三方电商数据 API 数据来源深度解析:合规与稳定背后的核心逻辑
本文揭秘第三方电商数据API的底层逻辑:通过官方授权、生态共享与合规采集三重来源,结合严格清洗校验,确保数据稳定、合规、高质。企业选型应关注来源合法性与场景匹配度,避开数据陷阱,实现真正数据驱动增长
SEGGER Ozone调试器支持第三方调试工具
SEGGER强大的Ozone调试器和性能分析器,长期以来一直深受J-Link和J-Trace用户的信任,现在可以支持第三方调试工具了。
电子测试行业中的第三方检测机构如何解决平台灵活度低,维护困难等痛点问题?
在竞争激烈的市场环境中,第三方检测机构面临着诸多挑战,尤其是在来料测试环节。某权威第三方检测机构就曾深陷困境,他们一方面要应对产品不确定性高与系统固化严重的矛盾,另一方面还需解决已有系
如何集成第三方支付API到电商网站
在电商网站中,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文将逐步指导您完成整个流程,从选择支付提供商到上线后的监控。文章结构清晰,包含代码示例和实用建议,帮助您高效实现支付
天合跟踪获得DNV第三方风洞测试审查报告
近日, 天合跟踪获得DNV颁发的中国支架行业首张风洞实验第三方审查报告。该风洞报告由天合跟踪与同济大学合作,针对开拓者1P跟踪支架进行了全新的刚性模型测压试验和先进动力学分析研究,并由DNV进行独立
使用 Claroty SRA 优化第三方 OT 远程访问
第三方,如原始设备制造商 (OEM) 技术员和维护承包商,是确保 OT 环境可用性、完整性和安全性的关键。负责服务 OT 资产的第三方经常远程工作。这意味着,他们会通过无数广泛使用的解决方案远程连接
钛和集团荣获零跑汽车第三方实验室资质认可
近期,钛和集团顺利通过了浙江零跑科技股份有限公司(以下简称“零跑汽车”)对第三方实验室的能力验证及资质审核,助力零跑汽车实现“成为值得尊敬的世界级智能电动车企”的品牌愿景。
钛和集团荣获吉利汽车第三方实验室资质认可
近期,钛和集团汽车事业部顺利通过了浙江吉利控股集团有限公司(以下简称“吉利汽车”)对外部实验室的能力验证及资质审核,并获得了第三方实验室认可证书,助力吉利汽车实现“让世界充满吉利”的品牌愿景。
SGS荣获比亚迪乘用车第三方实验室资质认可证书
近日,国际公认的测试、检验和认证机构SGS(以下简称:SGS)位于重庆的标瑞新能源实验室(以下简称:SGS-CEC)荣获比亚迪乘用车实验室认可委员会(以下简称:比亚迪)颁发的“乘用车第三方实验室资质认可证书”。
用第三方的dlp3010板子时遇到的几个问题求解
您好,在用第三方的dlp3010板子时遇到了如下问题:
固件能够更新,系统上电后,初始proj_on为低,resetz为低,intz为低;手动拉高proj_on和cypress的gpio6,能够
发表于 02-26 07:19
i.MX8M Yocto工程更新第三方软件包
NXPi.MX8M系列依托于Yocto工程进行简单快捷的配置,可以方便增删第三方软件包以及更改内核、Uboot源码等。目前有些客户希望能够升级Yocto自带软件版本,这里就以我司
EE-303:将VisualDSP线程安全库与第三方RTOS配合使用
电子发烧友网站提供《EE-303:将VisualDSP线程安全库与第三方RTOS配合使用.pdf》资料免费下载
发表于 01-07 14:09
•0次下载
第三方检测机构该如何提升核心竞争力?
在国家“一带一路”和“智能制造2025”等政策的引领下,面对竞争日益激烈的国际环境,作为全球最大的制造业国家,中国的检测行业正经历着迅猛的发展,成为全球增长最快、潜力最大的市场之一。 第三方检测逐渐

HarmonyOS微博第三方登录实现(内附代码)
评论