ShareSDK 微信及其朋友圈集成步骤

[img]http://dl2.iteye.com/upload/attachment/0109/4643/1c8f241f-54f4-3c3c-aeeb-e6f5daac9c72.png[/img]

一直以来很多人都在询问同一个问题“微信怎么不能用”。其实这个问题我老早就写在SDK说明文档里面(就是SDK解压目录下的PDF文件)了,可是大家都不看。考虑到文档很长搜索麻烦,我现在统一整个集成步骤,写下这个文档。

首先你须要获取Share SDK,这话比较多余,所以就跳过了——你需要到微信开放平台上注册你的应用信息。

[img]http://dl2.iteye.com/upload/attachment/0109/4635/0a0e125b-a258-3c51-8af2-06a020984b1d.png[/img]

进到微信的官网以后,点击右上角的“开发者”,然后登录你或者你们公司的微信帐号。

登录帐号以后,点击“登记我的应用”,创建应用信息。创建应用的时候一定要填写正确的应用名称,这个名称以后用来显示在微信消息的“应用表情”里面。
[img]http://dl2.iteye.com/upload/attachment/0109/4633/32b31bf8-7216-3bd6-bb1a-a445615d98d5.png[/img]
然后填写应用信息。由于微信在最近调整了Android平台的调试策略,导致Android平台的应用只有通过了审核才能调用成功调用微信客户端进行分享,因此请按微信页面要求,填写完整的应用信息,以便提交审核。

[img]http://dl2.iteye.com/upload/attachment/0109/4637/179cd9a9-676a-3213-9b36-76aa32a91398.png[/img]

完成上述步骤以后,基本上也就算完成应用登录了,但是请注意在最后的地方选择“移动应用”,因为我们创建的应用是一个移动应用,不是网站应用——事实上,微信还没开放网站应用登记。

[img]http://dl2.iteye.com/upload/attachment/0109/4639/0cb63a9b-4f9a-3600-9327-2c36dd8faf62.png[/img]
大部分开发者认为到此应用就算创建了,可以开始集成Share SDK进行开发,但这是严重的误解,完成这个,甚至还不到集成工作的五分之一。

完成应用登记以后,会直接看到一个“移动应用”的页面,页面中间有移动平台信息配置的内容,请至少勾选其中的“Android平台应用”:

[img]http://dl2.iteye.com/upload/attachment/0109/4641/7e2fa7d1-02fe-366a-a3b4-5a7a3ac3df4c.png[/img]
勾选以后会展开一个Android信息内容,请务必详细填写里面的东西。
因为很多人会填错这些信息,所以我详细说一下这三个框的内容要求。
首先是下载地址。微信的描述是很矛盾的,一方面要求下载地址,一方面不能填写真正的下载地址,很多人不知道怎么填。其实很简单的,如果你的应用已经发布,不管是什么应用市场,填写你的应用在这个电子商场上面的对应页面地址就行,如果你们只是在自己官网发布,那就下上官网这个应用的下载页面地址就可以。微信不允许连接携带“apk”后缀,因此直接下载地址是不可以的。
其次是应用签名。这个签名其实很容易产生,完全不需要微信的那个工具。但是产生的流程我不想重复了,所以直接复制SDK说明文档里面的内容:
(1)使用微信提供的签名计算工具,来签名:
如果您希望通过这个方法来计算签名,则需要下载微信的签名计算工具。此处需要注意的是下载回来的文件一定是“apk”的,如果您下载回来的文件是zip或者后缀名,请修改其后缀名为“apk”,并复制到您的手机上安装。
然后为您的应用导出一个签过名的apk。请注意,这个签名应该是您将来发布应用时的签名,也就是所谓的“正式包签名”。这里需要解释一下,微信并不要求具体使用的签名文件的性质,但是修改签名经常会导致问题,所以为了避免不必要的麻烦,Share SDK强烈建议您使用正式包的签名。
安装导出的apk文件,然后运行微信的签名计算工具。并在其中输入您应用的包名,微信会自动计算您应用所签keystore的MD5:

转至微信开放平台,将计算好的结果填写到其中并保存。
(2)利用Eclipse导出签名时显示的签名MD5值:
利用此方法,要求您下载最新版本的Eclipse Android开发插件(ADT)。确保此条件后,右键您的项目,选择“Android Tools”—“Export Signed Application Package…”:

此时会弹出一个导出签名apk的窗口,输入您应用正式签名和密码以后,会在导出页面中,显示您签名的MD5值。将其复制出来,调整为小写,并去除多余的风格符。转至微信开放平台,将计算好的结果填写到其中并保存即可。
[img]http://dl2.iteye.com/upload/attachment/0109/4647/91d04a9e-a448-3954-8d46-554268027b06.png[/img]

(3)Linux(Ubuntu)下,利用Shell直接计算:
如果您使用Ubuntu操作系统,可以直接利用下面的Shell命令计算出签名文件的MD5值:

keytool -exportcert -alias <keystore别名> -keypass <别名密码> -keystore <keystore路径> -storepass <keystore密码> | md5sum
如:

keytool -exportcert -alias demokey.keystore -keypass 123456 -keystore demokey.keystore -storepass 123456 | md5sum
其实出如下:

[img]http://dl2.iteye.com/upload/attachment/0109/4651/4a8a068e-eee6-3e3d-a644-ff99d9e3710b.png[/img]
将其复制出来,转至微信开放平台,将计算好的结果填写到其中并保存即可。
上面的方法,任选其一都可以计算出实际的签名文件md5值出来。其实你也可以尝试自己写代码计算,这个在说明文档中有类似的方法——facebook sso功能的签名base64代码。这个应该就是微信那个蹩脚的工具的计算方法,不过他们没有base64,也不是SHA,而是简单MD5而已。
最后是包名,这个应该不用多说。Android程序的唯一识别符就是包名,写在“AndroidManifest.xml”中。

[img]http://dl2.iteye.com/upload/attachment/0109/4653/2f92ea64-5214-32e5-a5c2-b5ccf3fdb0f7.png[/img]
完成上述三项的填写,然后保存,保存完毕以后,微信会提醒你:

[img]http://dl2.iteye.com/upload/attachment/0109/4655/2f9c127c-7a0d-3b47-9854-69eab23e6247.png[/img]
滑到页面底部,提交审核。审核一般需要3天以上的时间,如果审核通过,就可以开始集成的操作,如果不通过,最好修改应用信息。按照微信的说法,android平台不通过审核,是不能调用客户端来操作的:

[img]http://dl2.iteye.com/upload/attachment/0109/4659/1212046c-890b-360d-a087-0074e027eea8.png[/img]

审核通过以后,和其他平台的集成操作一样:如果需要快捷分享,引用快捷分享的项目,如果不需要,则直接引用mainlibs。对于Unity3D等只能直接引用jar的项目,可以复制mianlibs的jar到你的项目中,同时复制mainlibs的资源文件过去。这些文件是授权时需要的资源文件。接下来参考Sample项目的WechatPage里面的配置,如果需要分享文字,其ShareParams.shareType设置为SHARE_TEXT,如果仅仅只需要图片,设置为SHARE_IMAGE,在微信的两个平台中,SHARE_IMAGE和SHARE_IMAGE_TEXT是同义的,都只能分享图片(请注意,此处说的“只能分享图片”,指的是“分享的时候,你的应用只能设置分享内容中的图片”,因为事实上,微信总是会弹出一个框,让用户输入文字的,因此图文分享并不是不可以,只是分享中的文字你的应用无法设置)。微信并没有直接提供“图文分享”,所以为了模拟图文分享,请使用“SHARE_WEBPAGE”,但别忘记这个类型的图片是thumbPath,而且url字段是必须的。

编写完代码以后,不要直接run。微信注册的时候,如果你的keystore文件不是你用来调试的debugkey,是不能直接run的(事实上android程序都需要签名,平时eclipse run的时候似乎没有签名,其实adt已经用默认的debugkey给你的apk签名了,因此如果你注册应用信息时填写的keystore的md5是你的debugkey的md5,你还是可以直接run的)。因此请在测试的时候导出一个已经使用你上面注册时填写的keystore签过名的apk,然后通过adb命令行或者直接利用“豌豆荚”之类的工具安装到你的测试手机里面,这样子才可以测试。如果签名错误,微信会拒绝分享。

总的来说,一般开发者过来问:“微信为什么不能用”,我会回问他:“请问你在微信开放平台上注册了你的应用信息、包名和签名了吗?”如果他还没有,我会请他去参考SDK说明文档看第一章“签名”部分的说明。如果他已经注册了,那么(我默认他真的没填错MD5值),那么我会问:“那么你的应用已经提交审核了吗?”其实很多人会卡在第二个问题。以前微信是允许未通过审核的应用作测试的,但是现在它不允许了,所以一定要通过审核。如果第二个问题你也给了肯定,那么思考一下:“你是不是很惯性地run了?”请通过“Android Tools”—“Export Signed Application Package…”来导出一个签名的包。如果你还是给了肯定的答复,那就是麻烦的情况了:你最好检查一下你的签名值是否写错了?如果怎么检查都没有错,那是否你调用接口的时候参数传递错误了?参数是否错误,可以通过API文档或者错误的事件回调得到提醒。但是如果参数也没有错,日志也卡在微信那边了,那就应该和微信方面取得联系了。分享的时候,他们的客户端会检查你的应用,如果微信客户端认为你的应用有错误——不管是什么错误——它就会拒绝分享了,而且不给回应,不输出日志。即便是我,也不能知道原因。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页