微信分享及授权登录

QQ,微信第三方授权登录、分享 登录pc 微信登录 找后台拿链接 QQ登录 https://graph.qq.com/oauth2.0/show?which=Login&display=pc&state=当前时间戳&response_type=code&client_id=授权id&redirect_uri=回调地址 <a href="https://graph.qq.com... 阅读详情

微信分享及授权登录


分享

流程:进行sdk测初始化(就是注册第三方应用的过程)通过调用微信的sdk,打开微信(携带需要分享的数据),用户在微信中进行相应的操作,第三方应用得到相应的回调,如是否分享成功。

开发前需要了解的

  • 分享到哪里(朋友or朋友圈)
  • 分享的数据类型有哪些
  • 回调的类型(Type及Code)

分享到哪里

  • 朋友:WXSceneSession
  • 朋友圈:WXSceneTimeline

微信分享的常见数据类型

  • 文本:WXTextObject
  • 图片:WXImageObject
  • 音乐:WXMusicObject
  • 视频:WXVideoObject
  • 网页:WXWebpageObject(其中,网页的分享是开发中最常见。)

微信分享的回调

微信的回调需要在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。

type

  • COMMAND_SENDAUTH:认证请求
  • COMMAND_SENDMESSAGE_TO_WX:分享请求

code

  • ERR_AUTH_DENIED:认证被否决
  • ERR_COMM:一般错误
  • ERR_OK:正确返回
  • ERR_SENT_FAILED:发送失败
  • ERR_UNSUPPORT:不支持
  • ERR_USER_CANCEL:用户取消

代码的实现

注册到微信

/*要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id可以把操作放在程序的入口*/
IWXAPI api = WXAPIFactory.createWXAPI(this,ShareID.WEIXIN_ID,true);
api.registerApp(ShareID.WEIXIN_ID);

响应用户的分享操作

这里已分享一个H5页面为例。需要注意的地方有:

  • 图片的大小:thumbData,限制内容大小不超过32KB
  • description:1kb,title:512byte
private void shareWebPage() {
    WXWebpageObject webpage = new WXWebpageObject();
    webpage.webpageUrl = "http://www.baidu.com";

    WXMediaMessage msg = new WXMediaMessage(webpage);
    msg.title = "title";
    msg.description = "WebPage Description";

    Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    msg.thumbData = Util.bmpToByteArray(thumb, true);

    SendMessageToWX.Req req = new SendMessageToWX.Req();
    req.transaction = buildTransaction("webpage");
    req.message = msg;
    req.scene = SendMessageToWX.Req.WXSceneTimeline;
    iwxapi.sendReq(req);
}

WXEntryActivity中的回调

在onResp(BaseResp baseResp)方法中,可以获取getType(),判断是不是分享的操作。通过resp.code来判断有没有成功。在上面的code中列出了code的6种类型


微信授权登录

流程:用户点击微信登录,第三方应用通过sdk调起微信的一个授权页面,用户操作后会将回调传回WXEntryActivity类中,然后判断,如果成功,就会得到一个code,通过code再请求微信的接口,获取一个access_token,之后可以利用access_token这个参数请求微信接口,获取用户的个人信息。

开发前需要了解的

  • 微信的授权登录需要安装微信客户端。
  • 授权作用域:代表第三方应用的接口权限
    常见:snsapi_userinfo,用来获取用户的个人信息。
  • 获取access_token,个人信息需要进行网络请求。

代码的实现

请求授权

SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "my_test";
iwxapi.sendReq(req);
其中:state为非必要参数,用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。

WXEntryActivity中的回调

当用户无论取消授权还是完成授权,同样会来的这里,

/*获取code*/
switch (baseResp.getType()) {
        case ConstantsAPI.COMMAND_SENDAUTH:
            SendAuth.Resp resp = (SendAuth.Resp) baseResp;
            String code = resp.code;
            Log.i(TAG, "code:" + code);
            getToken(code);
            break;
    }

通过code获取access_token。

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

利用access_token获取用户的个人信息

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

可以自行打印看看返回的JSON数据。

总结

关于微信的sdk,这里只是一个更加清晰的流程,介绍。在开发过程中还有许多要注意的地方,如WXEntryActivity的关闭,分享的图片清晰度,大小的限制直接的平衡,授权登录时候的网络请求。

一个App中基本上不可能只集成一个微信,需要同时处理新浪,QQ等。

在调试过程去,如果换了appid,签名信息或者其它,代码如果没问题,就是不能分享,可以尝试清空微信的数据。

传送门:微信官方Android集成指南,微信Android SDK文档

微信页面登录、授权、分享 关于分享主要是分享时的链接、标题、描述文字、分享图标,这些信息不配置的话分享的就是当前页面的信息1、平台微信公众号:是针对公众号的,公众号里文章的推送、消息提醒。地址 http://mp.weixin.qq.com/wiki/home/index.html微信开放平台:针对应用,如果app要用到微信登录,就需要开放平台,需要申请自己的应用的信息,AppID和AppSecret,以及支付权限也是在这... 阅读详情

相关推荐

Android开发中集成微信分享SDK的实践总结

微信作为中国最大的社交平台之一,在移动应用中集成微信分享功能可以为用户提供方便快捷的社交分享体验。首先,我们需要在项目的 build.gradle 文件中添加微信分享SDK的依赖。在使用微信分享SDK之前,我们需要在微信开放平台注册应用并获取唯一的 AppID。请将 “YOUR_APPID” 替换为你在微信开放平台注册应用时获得的 AppID,“image_path” 替换为你要分享的图片的本地路径。请将 “YOUR_APPID” 替换为你在微信开放平台注册应用时获得的 AppID,“

UqndTf__的博客 1032

【cocos creator与C++知识分享】 二.anysdk打包微信登录、微信分享

转自:http://forum.cocos.com/t/cocos-creator-c-anysdk/45876 微信分享和微信登录是很多游戏都会用到的功能,这里我就我们项目中如何使用anysdk完成这两个功能做一个系统性的介绍。 我用的是cocos creator 1.4.2 关键步骤如下: 1. 设置anysdk参数 2. 配置cocos creator环境 3. 编写功能

Gabriel的专栏 3478

SAR成像处理基本知识2——图像尺寸与回波尺寸的关系

阅读本文前,请先了解上一篇文章(SAR成像处理基本知识1——常用专用名词解释) 1. SAR图像尺寸预估方法 以C波段2m@20km的SAR图像为例,假设天线中心下视角为35° ,说明图像尺寸的估计方法。 1.1 距离向尺寸估计 地距分辨率为2m时,距离向分辨率约为1.15m,则要求信号带宽不小于130MHz,假设信号带宽为150MHz,采样率为180MHz,那么距离向分辨单元为0.833m。 地距幅宽为20km时,距离向幅宽约为20*sind(3...

爱学习的小伟的博客 4954

微信分享功能(weixin-js-sdk)

目录一、安装微信JS-SDK二、调用后台请求接口、微信配置参数、微信分享配置等(在 wx.js文件中实现)三、在需要分享功能的页面进行调用(如:在商品页面 commodity.vue 文件中,在其 mounted 方法中调用wx.js文件中的分享方法) 一、安装微信JS-SDK //方式1:通过script标签进行引入微信 js-sdk的包 <script src="utils/weixin/weixin-js-sdk.js"></script> // 方式2:通过npm进行安装,

千里之行,始于足下! 4841

10分钟训练你的AI歌手:RVC WebUI声音克隆保姆级教程

本文提供了一份详细的RVC WebUI声音克隆保姆级教程,指导用户如何在10分钟内利用Retrieval-based-Voice-Conversion技术训练专属AI歌手。教程涵盖从环境配置、数据准备、模型训练到最终推理应用的全流程,即使是新手也能快速上手,实现高质量的声音克隆与歌曲生成。

weixin_29073241的博客 819

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

微信支付—前端+服务器流程梳理(适用于新手观看)

前言前一阵子有朋友初次集成微信支付,遇到很多坑。现在小伙伴终于集成完毕,并写下了本篇博客,我一直以来也想整理一下,无奈本人懒的整理,这次正好借用一下小伙伴的笔记,哈哈。网上关于微信支付的文章很多,但是感觉写的很多而且很乱,而且都是讲客户端和服务端全都写出来,搞得看的人根本搞不懂在客户端应该写写什么,在服务端应该写些什么;让人头很大!在这里主要区分客户端和服务端应该进行的操作流程!其实现流程也是按照微

十二指环的博客 5021

C/C++关于VScode报错“终端将被任务重用,按任意键关闭”的解决方案

这其实不是一种报错,有这个提示的原因是本地端口是被共享的,所以必须关闭一个进程才能执行另一个,只需要对 tasks.json文件做一些修改即可。 报错时候 此时的tasks.json为: { "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"], // 编译命令参数 "problemMatche

Jerry Man的博客 6425

JS-SDK接入以及微信二次分享

如果是 html 的静态页面在前端通过 ajax 将url传到后台签名,前端需要用 js 获取当前页面除去’#‘hash部分的链接(可用location.href.split(’#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。如果这里获取到的 signature 和你得出的 signature 一致,就证明你的 signature 是正确的。

m0_44973790的博客 3614

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。涵盖环境配置、本体结构设计、实例填充到可视化展示的全流程,特别适合初学者快速掌握知识建模技术。通过实战案例演示,帮助读者理解如何定义类、属性及建立实例关系,是学习知识图谱构建的实用教程。

weixin_42548816的博客 554

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

Android:微信授权登录与微信分享全解析

前言在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应用,于是微信,微博,QQ说了:来来来,你们都可以用我家的帐号登录你家应用,只要你遵循OAuth2.0协议标准就行。

MichaelX的专栏 3万+

Python量化交易:主流回测框架Backtrader入门详解

Python量化交易框架Backtrader入门指南 Backtrader是一个功能强大的Python量化回测框架,可以帮助交易者专注于策略逻辑而非基础设施。本文介绍了Backtrader的核心架构和使用方法: 框架优势:自动处理订单执行、手续费、滑点、仓位管理等复杂问题,采用事件驱动模式接近真实交易场景。 核心组件: Cerebro:控制中心 Strategy:交易策略 Data Feed:数据输入 Broker:模拟经纪商 Indicators:技术指标 使用流程: 安装:pip install bac

Science prince的博客 935

微信网页-授权登录-分享-支付

一个H5全部涉及,第一次使用,记录下来。 授权登录 1、需要一个公众号,正式没有可以去申请个测试的公众号,公众号后台授权管理配置授权回调域名。 2、jssdk提供了一个授权的地址,直接跳转过去即可 function getCode(){ var appId = "*********"; var redirect_uri = encodeURIComponent(commimUrl+'home.html')//可定义具体页面 var url = "https://open.weixin

qq_44158529的博客 521

使用 Python 构建 Reddit 热帖爬虫:抓取热门讨论帖和评论

在现代互联网中,Reddit 被誉为全球最大、最活跃的讨论平台之一,汇聚了各种主题的帖子、评论和社交互动。因此,抓取 Reddit 上的热门帖子和评论可以为我们提供一个丰富的文本数据源,可以用于情感分析、话题建模、趋势分析等应用。Reddit 提供了官方的 API,可以让开发者获取包括帖子、评论、用户信息等在内的各种数据。我们可以结合上述方法,抓取多个热门帖子,并将每个帖子的标题、作者、发布时间和评论内容保存到一个数据结构中。每个帖子的对象包含了丰富的信息,如标题、内容、发布时间、作者等。

2201_76125261的博客 382

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android 微信登录授权、微信分享

1.先去微信开放平台注册账号,然后创建应用,签名工具下载(在页面最下面),不细说。创建成功得到appid和secret(注册到微信、获取参数什么的都会用到)有个注意点,就是添加应用的时候会要签名,你测试的签名跟线上的签名不一样,会出现测试环境下可以调起微信,但是线上发布的不行,原因就是签名的问题,注意及时更换。2.配置环境,添加依赖dependencies { compile 'com.t...

yechaoa 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

angularjs实现微信授权登录,分享朋友圈,分享给好友(umeng)

先贴出一个链接:https://developer.umeng.com/docs/66632/detail/66825 友盟的开发文档 1.首先引入友盟集成 ng-click=“ctrl.shareProduct(targetCode)”; //targetCode为要区分的类型,自定义~ /** * 执行分享操作 * @param {number} targetCode - 分享类型码 */ sh

weixin_43517190的博客 841

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

微信登录设备android22,Android微信授权登录分享---封装类

2018.03.22 增加微信分享简介⚠️本文不包含sdk 集成、appId申请等基础步骤,入门移步 微信官方集成文档,查找错误码请戳微信官方错误码。微信授权登陆使用方式:请在在UserConstants类中设置AppID及AppSecret请在需要接收微信回调页面增加WechatObserver处理回调后的结果(参见MainActivity.WechatAuthObserver)请在发起微信授权...

weixin_42317730的博客 604

微信首页登录html页面,H5页面接入微信授权登录和分享

前期准备接入微信授权分静默授权和非静默授权两种静默授权: scope=snsapi_base,没有弹窗,只能获取用户的openId。非静默授权: scope=snsapi_userinfo,有弹框弹出需要用户手动点击确认授权。可以获取openId,用户的头像、昵称等授权步骤如下:判断URL有没有code有是已经授权,无是未授权未授权,跳转微信授权链接 这里采用静默授权https://open.w...

weixin_35965062的博客 2629

android社交分享代码,Android社交登录授权、分享SDK,支持微信、微博和QQ

社交登录授权,分享SDK支持微信、微博、QQ登录授权微信好友、微信朋友圈、微博、QQ好友、QQ空间分享Gradlecompile'com.elbbbird.android:socialsdk:0.2.0@aar'使用指南Debug模式SocialSDK.setDebugMode(true);//默认false平台SSO授权功能ISocialOauthCallback授权回调接口授权结果回调SD...

weixin_42355294的博客 243

php 手机微信登录验证码,thinkphp 微信授权登录 以及微信实现分享

namespace app\wechat\controller;use think\Controller;use think\Request;/*** 微信授权登录类* User: summer* Date: 2017/11/27* Time: 13:57*/class WeChat extends Controller{private $appid = '*********'; ...

weixin_28686463的博客 245

【亲测免费】 vue-wechat-auth:简化微信授权流程的利器

vue-wechat-auth:简化微信授权流程的利器 在当代Web开发中,微信授权登录已成为许多应用的核心功能之一。今天,我们要介绍一个开源项目——vue-wechat-auth,它为开发者提供了一个简洁、高效的微信授权解决方案。 项目介绍 vue-wechat-auth 是一个基于 Vue.js 的微信授权登录解决方案,旨在帮助开发者轻松实现微信授权功能。项目通过封装微信的授权API,简化了授...

gitblog_00492的博客 534

微信小程序【授权登录、分享、底部菜单、复制、折叠】

1. 授权登录 请参考另一篇博客:https://blog.youkuaiyun.com/yuzhiqiang_1/article/details/90379546 以上获取到openId,想获取如头像 名字 城市等详细信息请使用以下代码 wxml: <!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 --> &lt...

yuzhiqiang_1的博客 1553

微信页面登录授权和分享那些事

微信现在在我们的生活中已经是必须品了,很多公司都会基于微信做很多的推广活动,就例如 投票吧,一个页面分享出去让好友来帮忙投票,为了保证投票的准确性往往需要投票先登录自己的微信号完成登录授权后再进行投票,保证 一个用户只能投票一次,这里就要涉及到微信的网页登录和授权和分享,关于分享主要是分享时的链接/标题/描述文字/分享图标我们可以自定义,因为如果你不配置微信分享分享就是你当前页的信息,虽然微信提供

屋顶小黑猫 8033

微信授权登录和微信分享

<?php namespace app\common\controller; use app\common\controller\WechatAuth; class PortalBase extends Base { protected function _initialize() { parent::_initialize(); $uid = cookie('uid'); if(empty($uid)) { $this->auth(); ...

weixin_38008473的博客 398
上一篇: AndroidStudio使用gradle打包并实现多渠道打包
下一篇: 微信登录软键盘弹出后登录自动弹起
arplay
博客等级 码龄12年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值