JS-SDKソリューションマイクロチャネルアクセス機能署名を掃引有効および無効な署名が表示されません

まず、JS-SDKの機能は、マイクロチャネルアクセス方法を掃引についてで起動します。

ファースト・ステップにアクセスし、少し、ここでストレスが書き込みを参照することができ非常に詳細なドキュメントを開発するためのマイクロチャネルに言及:

私は、実装プロセスについて話をここに焦点を当てます:

最初のページに対応するJSファイルを導入することで、1行のコードで十分です。

(支持HTTPS):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

次に、インターフェイス注入の設定を介して構成されたアクセス許可を確認します。

まず、マイクロチャンネルの公式文書の開発の導入を見て:

それはサーバ側ウェブ表面からパラメータを渡さなければならないは、タイムスタンプ、nonceStrと署名とjsApiListのAppIDは、固定された場合、ライトバックへの直接書き込みプロセス。まず、書き込みサーバ側コード生成タイムスタンプ、nonceStrおよび署名。

 タイムスタンプ、nonceStr署名を生成し、2つのパラメータを取得する必要がある場合  1つのaccess_tokenはを、他方はjsapi_ticketあります。

買収は、次の位置を取得し、APPIDとAppSecret access_tokenは必要です。

次のアドレスを取得しGETリクエストを送信

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

ここで取得するaccess_tokenは道はこれの多くはAPPIDとしてオンライン限り、一般的にそうではないとappsercret正しいアドレスがOKに大きな間違い正しいことを言っているわけではありません。

私たちは、私は私自身:)取得方法について話すことができ、ここで(jsapi_ticket取得を集中してみましょう:

一般的なツールではCommonUtilはjsapi_ticketを得る方法の内側に書かれました:

JSAPI_TICKETそれは私がjsapi_ticketアドレスが定義され得るということです。

公共の最終静的な文字列JSAPI_TICKET =「https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi」。

方法:

取得access_tokenはコールこの方法によればjsapi_ticketに続いて利用できます。

しかし

特定のキャッシュとjsapi_ticketを確保するためにaccess_tokenは。

access_tokenはは法案公共のグローバル一意の番号である、国民は各インターフェイスを呼び出すときaccess_tokenは番号を使用する必要があります。開発者は、適切に保存する必要があります。

access_tokenはとjsapi_ticketは、そうでない場合は、オンラインのトリガ周波数限界、独自のキャッシュサーバである必要があります。二回、サーバ要求を削減するだけでなく、周波数限界をトリガしないようにトークンやチケット行い、いくつかのキャッシングを行うことを確認することを確認し7200秒間有効であるか、あるいはどちらもサービスとjsapi_ticketフロントラインaccess_tokenは、特定のグローバル・キャッシュ、ライントリガ周波数限界であれば、サービスは利用できなくなります。

詳細な文書をよくお読みください。

jsapi_ticketを取得した後、あなたはJS-SDKが権限を検証し、署名を生成することができます

上記署名生成規則が開発されているマイクロ流路文書:

、自分自身を書くことができない、特定のプロシージャのコードを生成する文書は、デモ例が提供しているマイクロチャネルを開発:

 

どのような言語で直接それを引き継ぐ使用されています!署名アルゴリズムを熟考しながら、書き込み中に達成することができます!

具体的なコードは、私が突き出し、および書かれた上でのデモと基本的に同じではありません。

コントローラー、コード層:

どのJsApiTicketUtil.getJsApiTicket();私はペアのキャッシュjsapi_ticketからです。

JsSignUtil.sign(jsapi_ticket、URL);、署名を取得するためのデモの方法です。

バックグラウンド・プロセスは、次のステップは、ページ上で、実質的に完了しました。

在config中进行配置:

由于后台中生成的签名时间随机字符串什么的都是我在前台页面上用ajax获取到的,所有我写的配置为

这个示例是我写微信扫一扫的示例。其中的jsApiList可以有很多值,微信开发文档上都用。

然后写一个简单的扫一扫按钮 写个触发事件:

不管是按部就班还是自己琢磨着写,总算是写下来了,接下来就是对自己写的进行测试了:

页面上功能按部就班的写完点击扫一扫没反应???WFT?只好把配置文件config的debug打开了。

发现每次打开页面总是会提示签名无效:

几乎整整一两天时间都再整这个bug,现在已经解决了,接下来我说说解决过程:

首先肯定是先看微信开发文档上给出的解决办法,这个也是一般非常常用的解决办法:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

截图:

如果出现签名无效 首先请按照官网文档上的方法一步步去排查,当然,排查过N次的同学就不用看了。

如果测试N次总是出现签名无效 ,那肯定是签名有问题。

如果用签名页面工具校验校验签名确实无误的话 ,那就是url的问题了。

微信开发文档常见错误报错上有这样一句话:

所以url要动态获取:可用location.href.split('#')[0]获取,而且需要encodeURIComponent,例如我写的:

然后后台获得还需要转换回来:

这是url的问题。一般这样写的话基本不会出什么错误了,要是还是出现签名无效,请继续往下看;

请确认你的AppId和AppSecret正确性;

确定通过AppId和AppSecret获取到的access_token全局缓存了并且有效。

确认获取到的jsapi_ticket是有效的 用到的access_token和appid是正确的。

确认获取access_token和jsapi_ticket的地址为:

 

请一定要仔细检查这个地址url,最好和官网文档上的对着一遍,看清楚是获取什么的地址栏!

最后再补充一点:

在查找错误的时候,我在百度上看到有人这样说:

上面的两个方法:是签名算法中的随机数和时间戳,首先请注意时间单位是秒 不是毫秒,其次是上面的随机数,官网文档上用的UUID获取的随机数,但是网上有人说必须是16位的,我这里写的也是16位的,如果经过上面的还报错的话

可以试试是不是这个的问题,时间紧我也没试呢!

遇到问题一定要先去仔细阅读文档,大部分答案都在文档中,都是自己粗心大意犯下的错。然后去百度,一步步排查,想不出来就想点别的总会解决的。

不说了,溜了溜了。

给个微信开发文档的路径:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

发布了48 篇原创文章 · 获赞 4 · 访问量 3万+

おすすめ

転載: blog.csdn.net/qq_39879632/article/details/80571619