web app 第三方登录-微博登录(一)

在最近参与的一个android项目中,使用的是web app 的形式,就是android提供容器,但是里面的内容都由H5实现。由于不是原生的app,给集成第三方登录带来一些困难。下面把集成的过程分享下~ 本篇博客分享的是微博的登录。

首先还是要看官方文档,链接如下:

http://open.weibo.com/wiki/移动客户端接入

如果之前没有成为微博开发者,看这里:

http://open.weibo.com/wiki/新手指南

在注册成为开发者,并仔细阅读文档后,可以开始进行代码的集成。需要微博的sdk:

https://github.com/sinaweibosdk/weibo_android_sdk
仔细阅读 新文档–>微博SDK 4.1文档.pdf


下面我主要讲web app 集成的过程。在讲之前,有些需要注意:

  • 在微博 我的应用 中填写的app包名和签名必须跟运行时的包名签名一致

我的应用

ps:之所以有此一说,因为在开发调试时打的debug包和发布的release包签名不一定一样,所以要比较注意。如果不一致的话,会导致无法授权

首先是前端部分的代码:

<div class="aui-btn-list-1">
	<a href="javascript:void(0);" class="weibo_reg_disable" id="weiboRegButton">微博登录</a>
</div>
$("#weiboRegButton").on('click',function () {
	window.android.doApp(8,"")
})

注意,上面这段代码中,window指的是当前窗口,关于js中的window对象,可以看:

http://www.w3school.com.cn/jsref/dom_obj_window.asp

由于window对象是全局的,省略不写也是可以的。
上面代码中的 androiddoApp 大家可能觉得奇怪,不要着急,这里跟android端大有干系。

来看看android端的代码:
我们在layout中添加一个WebView组件:

 <WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layerType="hardware">
 </WebView>

关于WebView,可以看:

https://blog.csdn.net/carson_ho/article/details/52693322
WebView可以理解为一个浏览器驱动,利用它可以在android中加载H5
页面,并跟其中的js交互,因为整个页面已经放到WebView中解析

在activity中,注意以下的代码只是列出相关的代码段,不能直接使用:

private WebView myWebView = null;
private H5AndAndroidInterface jsMethod;
myWebView = findViewById(R.id.webView);
jsMethod = new H5AndAndroidInterface();
myWebView.addJavascriptInterface(jsMethod, "android");
 class H5AndAndroidInterface {
        @JavascriptInterface
        public void doApp(int type, String jsonString) {
            if (jsonString == null) {
                jsonString = "没有值";
            }
            Log.e("Webview_doApp()", type + "--" + jsonString);
            switch (type) {
                case 8:
                    WbLogin wbLogin = WbLogin.getInstance(WebActivity.this);
                    wbLogin.login(WebActivity.this);
                    break;
                default:
                    toast("没有制定类型函数" + jsonString);
                    break;
            }
        }

再把刚才的js片段贴一下:

$("#weiboRegButton").on('click',function () {
	window.android.doApp(8,"")
})
  • 上下两段当中的android、doApp是关联的,我们在android中,利用addJavascriptInterface 这个函数,将一个名字(“android”,其实也可以用其他名字,比如"hello",或者你喜欢的任何名字)与js想要交互的android接口类对应起来:jsMethod<–>“android”。

  • 在用于交互的接口(H5AndAndroidInterface)类中,我们需要指明哪些接口是可以开放交互的,在这些接口上添加 @JavascriptInterface这个注解

  • 因为我们做了这样的关联(addJavascriptInterface ),当webview加载js时,遇到android这个属性就会映射到android中的具体类,只要js中的方法名和调用参数写对(doApp(8,"")),就会调用到 @JavascriptInterface 注解过的接口。

到这里还没有涉及到微博登录的具体内容,请看下一篇文章:
web app 第三方登录-微博登录(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当用户使用新浪微博进行第三方登录时,需要进行步骤: 1. 注册开发者账号:首先,你需要在新浪微博开放平台注册一个开发者账号,并创建一个应用。 2. 获取App Key和App Secret:在创建应用后,你将获得一个App Key和一个App Secret,这是用于进行身份验证和授权的凭证。 3. 引入SDK:你需要下载并引入新浪微博SDK到你的项目中。SDK提供了一些API和工具,方便你与新浪微博进行交互。 4. 授权登录:在你的应用中,提供一个登录按钮或者其他触发登录的方式。当用户点击登录按钮时,调用新浪微博SDK提供的接口,请求用户授权登录。 5. 获取Access Token:在用户授权登录成功后,你将获得一个Access Token。这个Token可以用来访问用户的个人信息和进行其他操作。 6. 调用API:使用获得的Access Token,你可以调用新浪微博提供的API来获取用户信息、发布微博等操作。 下面是一个简单的示例代码,展示了如何使用新浪微博SDK进行第三方登录: ```java // 引入SDK import com.sina.weibo.sdk.auth.Oauth2AccessToken; import com.sina.weibo.sdk.auth.WbConnectErrorMessage; import com.sina.weibo.sdk.auth.WbConnectObserver; import com.sina.weibo.sdk.auth.WbConnectProgressDialog; import com.sina.weibo.sdk.auth.sso.SsoHandler; import com.sina.weibo.sdk.common.UiError; import com.sina.weibo.sdk.share.WbShareCallback; import com.sina.weibo.sdk.share.WbShareHandler; // 创建SsoHandler对象 private SsoHandler mSsoHandler; // 在登录按钮的点击事件中调用以下代码 mSsoHandler = new SsoHandler(MainActivity.this); mSsoHandler.authorize(new WbConnectObserver() { @Override public void onSuccess(Oauth2AccessToken oauth2AccessToken) { // 登录成功,获取Access Token String accessToken = oauth2AccessToken.getToken(); // TODO: 进行后续操作,如获取用户信息等 } @Override public void onFailure(WbConnectErrorMessage wbConnectErrorMessage) { // 登录失败,处理错误信息 String errorMessage = wbConnectErrorMessage.getErrorMessage(); // TODO: 处理登录失败的情况 } }); // 在Activity的onActivityResult方法中添加以下代码 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } ``` 请注意,以上代码仅为示例,实际使用时需要根据你的项目需求进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值