第三方登录android代码,Android Learning:微信第三方登录(示例代码)

这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪。我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开。

步骤一 微信开发者平台

我开始的解决思路是,去

这个API文档的主要意思呢,有三点:

1、你得下载这几样东西(

29076939c40c4759a55a1c0320e038fd.jpg

2、如果你自己的APP想要微信第三方授权,你得去申请一个APPID,这个APPID呢,就是微信给咱们APP分配的一个代号。当然微信不是免费给你服务,为了获得这个第三方授权的功能,你得给微信交300块钱。申请到这个授权之后,你需要填写一个应用包名,和一个应用签名。

c8d243c427fa463194cfcc710c049728.jpg

应用包名

d70d6b76ec0048a4bc39069932e8255a.jpg

应用签名

使用签名生成工具,输入包名,查询到应用签名

d098ae023910436ebcb7fec910848218.jpg

3、然后打开DEMO

程序的入口WXEntryActivity是我们所最需要关注的

// 微信发送请求到第三方应用时,会回调到该方法

@Override

public void onReq(BaseReq req) {

// TODO

}

当点击授权登陆的界面的时候,会自动调用这个onResp方法,所以我们可以在这里面取得所需要token。注意andorid里叫token,ios里面叫code,而不是因为sdk版本的问题,这是需要注意的。

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法

@Override

public void onResp(BaseResp resp) {

int result = 0;

switch (resp.errCode) {

case BaseResp.ErrCode.ERR_OK:

result = R.string.errcode_success;

/*获取token*/

SendAuth.Resp sendResp = (SendAuth.Resp) resp;

String code = sendResp.token;

Log.d("Tag", "code\t" + code);

break;

case BaseResp.ErrCode.ERR_USER_CANCEL:

result = R.string.errcode_cancel;

break;

case BaseResp.ErrCode.ERR_AUTH_DENIED:

result = R.string.errcode_deny;

break;

default:

result = R.string.errcode_unknown;

break;

}

APP_ID 替换为你的应用从官方网站申请到的合法appId

public class Constants {

// APP_ID 替换为你的应用从官方网站申请到的合法appId

public static final String APP_ID = "wx77777";

}

// IWXAPI 是第三方app和微信通信的openapi接口

private IWXAPI api;

final SendAuth.Req req = new SendAuth.Req();

req.scope = "snsapi_userinfo";

req.state = "wechat_sdk_demo_test";

//发送授权登陆请求

api.sendReq(req);

这一步就是和微信要code。执行了这一段代码之后。微信会调用刚才WXEntityActivity类里面的onResp()方法。并且把code返回来了。见上面那一段代码。获取到code之后就可以通过code获取access_token了。

请求以下链接获取access_token:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

这步和微信通信获得access_token就是普通的访问链接。 用httpClient就行了,而不是接入指南里说的那个和微信通信的方法onReq().然后还是这样的方式通过access_token.就可以调用接口获得用户基本信息了。具体返回参数什么的接入指南里面说的很清楚。至此微信授权基本是成功了。

这里,我们要添加Custom debug keystore。上面的那个debug keystore不会和微信通信。

而我们添加的这个keystore 也要符合一些规范所以要改一改。

不过在开发的过程中要注意一下debug keystore。

步骤二 Android studio如何生成keystore文件

第一步 创建签名文件

8ed0e31f866a471a8562c226fc8326fa.jpg

第二步 填写签名参数

b2e41dfb76a74f02b73b9a58f771e4a6.jpg

a068835d05c24743ab077c300fffa76a.jpg

第三步 选择构建类型

94298f43dccb42aeb6923a8940b61aaa.jpg

第四步 查看生成第apk文件

4d7cf0abd26044f7ae59f7bee1c815f0.jpg

e16196b8727546d99048f0810ce1cc2e.jpg

步骤三 Android studio如何定位keystore文件

在运行微信分享Demo及新浪微博分享Demo时,需要修改使用Demo中的debug.keystore才能运行授权及和分享。

在进行Android开发中,所用到的工具,就Eclispse和Android Studio比较多。其中,使用Eclipse里修改debug.keystore的方式新浪微博文档有介绍,在Eclipse里点击"Windows-->Preferences-->Android-->Build",在右边的"Custom debug keystore"选择Demo中的debug.keystore即可。

在Android Studio中的做法是"Project Structure"中“Modules”中的应用的模块。然后选择"Signing",点击"+"号,起名为“debug”,并在“Store File”里选择Demo中的debug.keystore,如下图

c5d700aabce74e75b1fb0a9da01d193c.jpg

然后在选择“Build Types”在“debug”中的"Signing Config"选择上面配置的"debug",如下图

fec7dba459ba4f9eb9585830be8d17b4.jpg

点击“OK”,重新编译就可以了。

通过上面配置完后,会自动在项目模块中的build.gradle里的android {}里生成

signingConfigs {

debug {

storeFile file(‘.keystore里文件路径‘)

}

}

以及在buildTypes里生成

debug {

signingConfig signingConfigs.debug

}

当然啦,可以不用界面配置,直接在build.gradle里写上面的配置也都OK的

步骤四 获取签名 填写到微信开发者平台

接下来将定位到jks文件的工程烧写到程序中,然后将签名工具的MD码填写到微信开发者平台,就能调用第三方授权登陆了。

d098ae023910436ebcb7fec910848218.jpg

c8d243c427fa463194cfcc710c049728.jpg

效果图

11042e00fe4e4e37a56e954f8dd22e20.jpg

参考链接:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】基于DCMTK的DICOM相关程序编写攻略

转自:https://blog.csdn.net/jackmacro/article/details/5332654 零、前言: 由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,因此,我们在进行医学图像处理的过程中,经常需要自己编写和DICOM格式的图…

对象与函数

摘自《UMLOOPC嵌入式C语言开发精讲》 11.3 对象与函数11.3.1 函数的角色经济诺贝尔奖得主H.A.Simon(H.A.Simon,计算机人工智能之父)在其1962年的文章《The Architecture of Complexity》中说道:“从小系统建造成庞大系统时&…

android打包工具多渠道批量打包,Android 快速渠道批量打包详解教程-美团多渠道打包方案...

今天写一篇文章来总结下android批量打渠道包美团版本。之前项目上一直用的是gradle 批量打包方式,那个速度啊真是令人发指,15个渠道得跑上半个小时,出去吃顿饭回来,还在跑。特别是赶上项目上线的话,如果给测试提交了正…

【转】云社区 博客 博客详情 二维异形件排版算法介绍(一)

转自:https://bbs.huaweicloud.com/blogs/175385 【摘要】 排样问题(Nesting Problem)又称为下料问题(Cutting and stock problems)或填充问题(Packing Problem),其目标是在材料切割过程中寻找一个较高的材料利用率。排样问题属于…

增加RIL组件时编辑出现的问题

当我把RIL组件加进到CE6的项目里去编译,本来好好的项目编译不过去了,我就选择了RIL的所有feature,没有改任何东西,理论上sysgen就可以了,但是确总是编译不过去 看根目录下的build.log: E:/WINCE600/OSDesigns/POS410/POS410/Wince600/E6000_ARMV4I/cesy…

android 微信两个服务的,微信上线两个新功能

微信又上线新功能了!一个与你的钱包相关,一个与你的微信号相关,赶紧来看看吧微信支付分全面开放每个微信用户都拥有自己的一个分数值 ,且每月根据综合数据更新一次。达到一定的分值门槛,用户即可享受超千项便捷服务。这…

【转】二维异形件排版算法介绍(二)

转自:https://bbs.huaweicloud.com/blogs/196289【摘要】 二维不规则异形件主要有两种策略:分别是基于可行解的排样策略和基于重叠移除的排样策略。所谓基于可行解的排样策略,是指在排样过程中零件之间始终是不重叠的,而基于重叠移…

解决用户控件循环引用的笨办法

在上一篇中提到使用MagicAjax开发了一个项目,因为做这个项目之前对MagicAjax不是很了解,在里面使用了用户控件,我发现这是一个很致命的错误,用户控件在MagicAjax中用起来很痛苦.因我们的项目不是简单的只要求"看起来像"没有刷新页面,其中一个主要的页面有那么一点点复…

【转】介绍一些免费/开源的医学影像后处理工具

转自:https://blog.csdn.net/liaopiankun0618/article/details/84328331 来源:融视影像科技 综述 医学影像的处理有两个特质。一是复杂,整个处理流程涉及多种算法,需要调整的参数较多。二是发展快,从采集、重建到后…

android 安卓市场,安卓市场(Android Market).doc

安卓市场(Android Market)安卓市场(Android Market)Android (HiMarket) China market is the earliest and largest Android software and online game download platform, Netdragon well-known products, provide good service for users of mobile phone software. Since it…

IROM 浅见

IROM其实是三星已经固化在CPU里面的一段代码,我们要做的事情就是提供一段可以供IROM读取的8K代码程序,至于这8K代码放在哪里,由CPU的相关引脚决定(OM1-OM4,GPN13-GPN15)。也就是说从哪里启动的意思。 如果从…

LINQ是死是活?——很奇怪为什么会有这样的话题?

LINQ是死是活??? 如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊。所以我觉得“LINQ是死是活”的说法也很奇怪? LINQ诞…

android gradle 语法,Gradle 1.语法

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?gradle 语法解析:gradle的语法十分简洁,以至于看起来跟像是配置文件。先看一个简单的android项目完整的gradle脚本:build.gradle123456789101112131415…

【转】二维异形件排版算法介绍(三)

转自:https://bbs.huaweicloud.com/blogs/203947 【摘要】 相比于基于可行解的排样算法,重叠移除算法在改变解的状态时,允许零件之间发生重叠,然后采用分离技术消除重叠,直到达到算法的终止条件为止。重叠移除算法的关…

WinCE6.0中应用程序如何直接访问物理空间

在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间。以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求。但这种方式有一个明显的缺陷,每次读写都必须经由它才能完成。如果只是读取GPIO,那问题不算大。如…

开博之文

逛园子很久了,读而不写非礼也。分享技术,交流经验,体味人生,本博主旨,此为09年的开年大事。转载于:https://www.cnblogs.com/imstand/archive/2009/01/11/1373712.html

【转】Dicom格式文件解析器!!!!!!!

转自:https://www.cnblogs.com/assassinx/archive/2013/01/09/dicomViewer.html Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯的问题 只讲*.dcm 也就是diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码数据流处理。只不过确…

android 设置view最大高度,android-在RecyclerView上设置最大高度

我有一个对话框片段,其中包含线性布局,其中涉及RecyclerView上方的titleText,在最底部,recyclerView下方有一个按钮.由于recyclerView根据适配器设置的项目数展开或折叠,因此按钮有时会被截断并且不再显示在屏幕上,因为recyclerView仅覆盖整个屏幕.我的问题是,有没有一种方法可…

【转贴】利用 Javascript 获取 URL 参数(适合IE、FF)

.  ... .../test.html?str123456如何用Javascript接收类似上面的url参数呢?这个问题网上有很多答案,看了看,主要有两种,一个是利用字符串的截取,另一种是利用正则表达式。[正则式&#xff3d…

【WinCE】流设备驱动简介及GPIO驱动的实现

流设备驱动实际上就是导出标准的流接口函数的驱动,这是文档上面的定义。在WinCE中,所有的流设备都导出流设备接口,这样WinCE中的Device Manager可以加载和管理这些流设备驱动。 流设备驱动的架构如图: 首先我声明一下,…