微信登录有客户端和无客户端杂谈

最近在做微信登录相关的操作,本来app是无微信状态下直接提示没有微信不能登录的,但是苹果审核的时候给打回了,说我们微信登录要在无微信状态下也可以使用。懵比。

We were still required to install the WeChat app before we can log-in via WeChat. The user should be able to log-in and access their account, without requiring additional applications to be installed.

Next Steps

If you choose to allow users to log-in via WeChat, please use methods that can authenticate users from within your app, such as a native web-view.

废话不多说,直接开始解决。

talk is cheap       show me the code

首先,有客户端的情况下正常登录,没什么好说的,

第一步,下载微信sdk。在这里我们直接使用微信sdk,而不是借助友盟等其他第三方服务。

第二步,导入相应的开发包到你的项目中,这个会在下载的官方demo中有,一个个导进去就好了

这两步搞好,其他就看文档吧,写的很详细。

在这里要注意一个点,使用微信SDK时,如果出现这种错误 "operator new[](unsigned long)", referenced from:"

是微信sdk的问题,找不到对应的编译包,把libc++这个导入就ok了

下面就是重点了,在看文档的时候,微信给了我一个很无语的介绍:

1、目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。
2、对于Android应用,建议总是显示微信登录按钮,当用户手机没有安装微信客户端时,请引导用户下载安装微信客户端。
3、对于iOS应用,考虑到iOS应用商店审核指南中的相关规定,建议开发者接入微信登录时,先检测用户手机是否已安装微信客户端(使用sdk中isWXAppInstalled函数 ),  对未安装的用户隐藏微信登录按钮,只提供其他登录方式(比如手机号注册登录、游客登录等)

就是上面这个介绍让我懵比。后来去网上搜了一下,然后再看看WXApi.h这个头文件,发现里面有一个方法

/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp
 *
 * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。
 * @param req 具体的发送请求,在调用函数后,请自己释放。
 * @param viewController 当前界面对象。
 * @param delegate  WXApiDelegate对象,用来接收微信触发的消息。
 * @return 成功返回YES,失败返回NO。
 */
+(BOOL) sendAuthReq:(SendAuthReq*)req viewController:(UIViewController*)viewController delegate:(id<WXApiDelegate>)delegate;

 这就是福音。

不说话,直接调用。

    SendAuthReq* req =[[SendAuthReq alloc ] init];
    req.scope = @"snsapi_userinfo";
    req.state = start;

    [WXApi sendAuthReq:req viewController:self delegate:[WXApiManager sharedManager]];

在这里,需要有一点注意。req.scope = @"snsapi_userinfo",这个是固定的。

我的这份代码中,微信登录有客户端的时候写的是

   SendAuthReq* req =[[SendAuthReq alloc ] init];
   req.scope = @"snsapi_userinfo, snsapi_base";
   req.state = start;
   [WXApi sendReq:req];

我就偷个懒吧下面换掉了,结果很长时间都是调不出来,就是没反应。后来逐一检查,才发现这个问题。

注意,无客户端情况下登录,req.scope = @"snsapi_userinfo",这样写就够了

这是其一。

其二,还是无客户端情况下。我这边在做的时候还有一个是微信绑定,作用就是把微信跟公司自己的帐号系统绑定在一块,这样做就是以后微信登录我们这边也就是相当于帐号登录,帐号对公司业务有影响,这个就不多说了。

做的时候我把调用的代码加了一个判断就丢到一个控制器的viewDidLoad中了,但是每次点击绑定的时候,这玩意弹出来显示一片空白,就是没有内容。

代码一摸一样的,我就想应该是加载的问题,就把调用代码放在viewDidAppear中,果然可以。

所以在这个地方也有一个注意点,微信登录调用的时候需要控制器加载完成后.


以上就是我在做的时候碰到的一些小问题,希望对大家有些许的帮助

转载请注明出处

时间: 2024-08-07 04:34:17

微信登录有客户端和无客户端杂谈的相关文章

RHCE 系列(九):如何使用无客户端配置 Postfix

转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0220/152.html?1456382561 尽管现在有很多在线联系方式,电子邮件仍然是一个人传递信息给远在世界尽头或办公室里坐在我们旁边的另一个人的有效方式. 下面的图描述了电子邮件从发送者发出直到信息到达接收者收件箱的传递过程. 电子邮件如何工作 要实现这一切,背后发生了好多事情.为了使电子邮件信息从一个客户端应用程序(例如 Thunderbird.Outlook,或者 web 邮件服务,例

防火墙上实现无客户端SSLVPN

实验 实验拓扑图: 实验步骤: 各设备IP地址规划: R2(config)#int f0/1 R2(config-if)#ip add 100.0.0.2 255.255.255.252 R2(config-if)#no shut R2(config-if)#int f0/0 R2(config-if)#ip add 200.0.0.2 255.255.255.252 R2(config-if)#no shut R3(config)#int f0/1 R3(config-if)#ip add 2

SSL VPN的无客户端配置实验

实验目的:主要是通过在ASA防火墙做SSL VPN的无客户端模式,来使得公网上的一台客户机能够通过加密隧道来访问局域网内部的资源.拓扑比较简单,主要是原理,配置过程如下: ISP运营商的配置,只需要配置IP地址即可. ISP(config)#int fa0/0 ISP(config-if)#ip add 10.0.0.2 255.255.255.0 ISP(config-if)#no shut ISP(config)#int fa0/1 ISP(config-if)#ip add 20.0.0.

.net中使用ODP.net访问Oracle数据库(无客户端部署方法)

.net中使用ODP.net访问Oracle数据库(无客户端部署方法) 分类: c# database2012-01-05 15:34 6330人阅读 评论(1) 收藏 举报 oracle数据库.netcomponentsdll ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. 以下内容转载自:http://blog.ywxyn.com/index.php/archives/326

SSL VPN 无客户端配置

无客户端模式web访问 webvpn        //启用webvpn功能// enable outside   //调用到外部接口// username zhangsan password 123123  //配置用户名和密码// ----------------组策略------------------------------ group-policy gpolicy internal   //组策略定义在本地// group-policy gpolicy attributes //定义组

VMware vSphere client 5.1登录出现这个错误:客户端无法向服务器发送完整请求

故障描述:服务器安装好VMware esxi 5.1,在自己的XP上安装了VMware vSphere client 5.1之后登录出现这个错误:客户端无法向服务器发送完整请求. 原来我另一台服务器安装的是5.0的版本,可以登录到虚拟机,为什么就不能登录到5.1呢?百度了一下,别的TX也有此类问题,但没有解决办法,估计还是客户端的问题,换了一台PC直接在浏览器输入服务器的IP,从打开的WEB页面直接下载Download vSphere Client.安装之后还是同样的问题.后来想到是不是不支持3

Asp.Net微信登录-手机网站APP应用

要求:公众号必须先认证,认证费用¥300/年,比较黑 一.微信登录核心代码 //核心代码,没判断异常 1.登录页面 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string appid = "wx86d123456789"; string redirect_uri = HttpUtility.UrlEncode("http://www.114390.com/");

微信登录

微信开放平台和公众平台的区别 1.公众平台面向的时普通的用户,比如自媒体和媒体,企业官方微信公众账号运营人员使用,当然你所在的团队或者公司有实力去开发一些内容,也可以调用公众平台里面的接口,比如自定义菜单,自动回复,查询功能.目前大多数微信通过认证之后,都在做这个事情. mp.weixin.qq.com 2.开放平台面向的开发者和第三方独立软件开发商.我觉得开发平台最大的开放就是微信登录.当年腾讯没有花大力气去做统一登录这个事情,导致目前各个网站都要弄一套登录机制.好在他们现在认清了局势.开发者

微信开放平台开发(2) 网站应用微信登录

关键字:微信公众平台 微信开放平台 微信登录 微信扫码登录 使用微信账号登录网站作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/weixin-qrlogin.html 在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现微信扫码登录的功能. 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥