赢第三方微信登录跟微信支付差别不是很大,下面一一为大家分享一下,欢迎吐槽指正。
接入微信的支付要第一步添加微信支付官方的包libammsdk.jar

一。配置文件Androidmanifest

        <activity
            android:name=".teacher.ui.Activity"android:label="@string/app_name"android:exported="true"android:launchMode="singleTop"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="wx690b9cf56a4ec056"/> //写入你的appid</intent-filter></activity>

二。调起微信登录

Activity里面
在onCreate里面初始化IWXAPI

    public static final String APP_ID = "wx690b9cf56a4ec056";private IWXAPI api;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_affirm_order);api = WXAPIFactory.createWXAPI(AffirmOrderActivity.this, APP_ID, true);api.registerApp(APP_ID);}

发起登录代码
你没有看错,就只有这么点代码,里面需要的值你们自己的后台会返回的,拿过来塞到里面就好

          Final SendAuth.Req req = new SendAuth.Req();req.scope = "snsapi_userinfo";req.state = "wechat_sdk_demo_test";api.sendReq(req);//以上代码就是发起微信登录的方法

三。登录结果的处理
请求成功后,可拉起微信的授权登录页面。用户点击“确认登录”后,SDK通过SendAuth的Resp返回数据给调用方(即app),此时WXEntryActivity中的public void onResp(BaseResp resp)方法被调用(微信、朋友圈分享成功后,此方法同样会被调用),微信登录的返回值说明如下。这里app可以做相关的处理,见WXEntryActivity.java文件中的处理,取code为下一步获取access_token和openid等信息做准备。此处获取code的方法
这里面分为两步
1,微信提供的登录结果的类叫WXEntryActivity,
微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名+.wxapi.WXEntryActivity.java
如下;
“`
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{

private IWXAPI api;@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText("支付结果");setContentView(tv);api = WXAPIFactory.createWXAPI(this, AffirmOrderActivity.APP_ID);api.handleIntent(getIntent(), this);
}@Override
protected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);
}

public void onResp(BaseResp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
String code = ((SendAuth.Resp) resp).code; //即为所需的code
break;
}
}
}

然后通过code获取access_token

获取上一步中的code后,调用以下接口获取access_token,官方指出用Get方式请求。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
请求参数说明:
appid:应用唯一标识,在微信开放平台提交应用审核通过后获得。
secret:应用密钥AppSecret,在微信开放平台提交应用审核通过后获得。
code:填写第一步获取的code参数。
grant_type:填authorization_code。
返回说明
正确的返回:
{
“access_token”:”ACCESS_TOKEN”,
“expires_in”:7200,
“refresh_token”:”REFRESH_TOKEN”,
“openid”:”OPENID”,
“scope”:”SCOPE”
}
返回参数说明:
access_token:接口调用凭证。
expires_in:access_token接口调用凭证超时时间,单位(秒)。
refresh_token:用户刷新access_token。
openid:授权用户唯一标识。
scope:用户授权的作用域,使用逗号(,)分隔
注意:
1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

建议将Appsecret、用户数据(如access_token)放在App云端服务器,由云端中转接口调用请求。

刷新access_token有效期

access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:

  1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;

  2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。

请求方法

获取第一步的code后,请求以下链接进行refresh_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

然后根据自己的需求选择调用以下接口
对于接口作用域(scope),能调用的接口有以下:

/sns/userinfo 获取用户个人信息
/sns/auth 检查access_token有效性
需要更多的接口到微信开放平台查看 https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN

snsapi_base /sns/oauth2/access_token 通过code换取access_token、refresh_token和已授权scope
/sns/oauth2/refresh_token 刷新或续期access_token使用
/sns/auth 检查access_token有效性
snsapi_userinfo /sns/userinfo 获取用户个人信息

记得,在配置文件Androidmanifest注册WXPayEntryActivity

 <activityandroid:name="(你的包名).wxapi.WXEntryActivity "android:exported="true"//这一句一定不能少android:launchMode="singleTop" />

结束语:微信的登录很简单,建议看懂微信的官方文档再动手搬砖会省事很多。

Android 微信第三方绑定登录详解相关推荐

  1. Android客户端实现注册/登录详解(一)

    前言 我们在开发安卓App时难免要与服务器打交道,尤其是对于用户账号信息的注册与登录更是每个android开发人员必须掌握的技能,本文将对客户端的注册/登录功能的实现进行分析,不到之处还请指出. 在这 ...

  2. 微信端php 开发技术要求,微信第三方平台开发详解——PHP版

    申请第三方平台,这个很简单直接按照提示填写,下面的授权事件接收URL中获取的component_verify_ticket是会过期的,所以不要只获取一次,缓存起来每10分钟会发送一次,每1小时会更新一 ...

  3. 15、微信小程序登录详解

    1.登录流程 1.获取临时登陆凭证 code (code -- 限频接口),wx.login() 2.前端向服务器发送 ajax 请求( wx.request() ),该请求需要携带三个参数:code ...

  4. Android第三方登录详解2

    接着Android第三方登录详解1讲 1.找到友盟  文档中心 2.找到 3.将 UMSocialService mController = UMServiceFactory.getUMSocialS ...

  5. 微信小程序点击按钮弹出弹窗_转载 | 广东大学生就业创业微信小程序操作流程详解(一)...

    广东大学生就业创业微信小程序 操作流程详解(一) 转眼来到10月,炎炎夏日也阻挡不了青春的忙碌,同学萌走出校园,迈向社会. 在这段时间,同学们不仅要准备毕业论文,应对毕业答辩,还需要兼顾各种毕业手续的 ...

  6. Android中的四大组件详解

    Android中的四大组件详解 我们都知道Android系统应用层框架中,为开发者提供了四大组件来便于应用的开发,它们是Activity.Service.BroadcastReceiver.Conte ...

  7. android OKHttp的基本使用详解

    今天,简单讲讲Android里如何使用OKHttp. Android框架系列: 一.android EventBus的简单使用 二.android Glide简单使用 三.android OKHttp ...

  8. 微信支付 php详解,PHP实现微信支付实战案例详解

    这次给大家带来PHP实现微信支付实战案例详解,PHP实现微信支付的注意事项有哪些,下面就是实战案例,一起来看一下. 前期准备: 1.微信认证服务号,并且开通了微信支付 2.微信支付SDK,下载地址:h ...

  9. android demo示例代码,Android Service demo例子使用详解(示例代码)

    Android Service demo例子使用详解\ 概述 Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 ...

最新文章

  1. SAP采购订单下传SRM
  2. 从数据库中存取二进制数据并显示
  3. 互联网协议 — TCP — (面向面向连接的)三次握手、四次挥手
  4. python银行系统-Python实现银行账户资金交易管理系统
  5. 怎样在黑窗口中查找各种端口
  6. PAT-乙级-1020. 月饼 (25)
  7. linux控制台编辑模式下换行,linux控制台命令的换行识别问题
  8. mysql初始化很慢_mysql初始化报错
  9. 机器学习第六回——降维+异常检测
  10. 可能是阿里云学生成长计划续费资格考试最全的答案资料
  11. python list突破上限武器_Python3 tkinter基础 Listbox height 显示行数的上限
  12. android组合键截图原理,步步高vivo x7怎么截屏 组合键截图方法教程
  13. 超分辨率重建 matlab,图像超分辨率重建软件
  14. 蚂蚁区块链使用搭建方法
  15. Mysql数据处理函数/单行处理函数
  16. warning: array subscript is above array bounds
  17. excel保存快捷键_Excel新手必备的5大技巧,看看你会几个?(附26个超实用快捷键)
  18. amd linux显卡驱动,AMD Radeon系列显卡催化剂驱动14.4 正式版For Linux AMD Radeon系列显卡催化剂驱动14.4 正式版 显卡驱动 超威半导体...
  19. DirectX11 简介+环境配置
  20. java中的udp丢包_udp丢包 处理

热门文章

  1. S3C2440时钟体系结构与编程
  2. 如何抢救变砖的nxp板子
  3. toshiba 共享文件夹_OMV使用篇三:文件共享
  4. 海外运营商搜网流程1
  5. 阅读笔记:Towards Environment Independent Device Free Human Activity Recognition
  6. 从计算机找不到桌面文件,文件夹左侧计算机图标找不到了无法保存及上传怎么办...
  7. 6篇关于撒谎600字优秀作文,心田花开整理
  8. 【真相】学UI设计有没有前途呢?
  9. excel保存列名不变,将好几列数据按顺序整合到一列
  10. 电工电子电拖实验室设备QY-DG108B