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

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

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

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

新图片(1).png
登录帐号以后,点击“登记我的应用”,创建应用信息。创建应用的时候一定要填写正确的应用名称,这个名称以后用来显示在微信消息的“应用表情”里面。

新图片(2).png
然后填写应用信息。由于微信在最近调整了 Android 平台的调试策略,导致 Android 平台的应用只有通过了审核才能调用成功调用微信客户端进行分享,因此请按微信页面要求,填写完整的应用信息,以便提交审核。

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

新图片(4).png
大部分开发者认为到此应用就算创建了,可以开始集成 Share SDK 进行开发,但这是严重的误解,完成这个,甚至还不到集成工作的五分之一。

完成应用登记以后,会直接看到一个“移动应用”的页面,页面中间有移动平台信息配置的内容,请至少勾选其中的“ Android 平台应用”:
新图片(5).png 
勾选以后会展开一个 Android 信息内容,请务必详细填写里面的东西。

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

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

新图片(8).png
此时会弹出一个导出签名 apk 的窗口,输入您应用正式签名和密码以后,会在导出页面中,显示您签名的 MD5 值。将其复制出来,调整为小写,并去除多余的风格符。转至微信开放平台,将计算好的结果填写到其中并保存即可。
新图片(9).png

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
  
其实出如下:

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

新图片(11).png
完成上述三项的填写,然后保存,保存完毕以后,微信会提醒你:

新图片(12).png
滑到页面底部,提交审核。审核一般需要 3 天以上的时间,如果审核通过,就可以开始集成的操作,如果不通过,最好修改应用信息。按照微信的说法, android 平台不通过审核,是不能调用客户端来操作的:

新图片(13).png

审核通过以后,和其他平台的集成操作一样:如果需要快捷分享,引用快捷分享的项目,如果不需要,则直接引用 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 文档或者错误的事件回调得到提醒。但是如果参数也没有错,日志也卡在微信那边了,那就应该和微信方面取得联系了。分享的时候,他们的客户端会检查你的应用,如果微信客户端认为你的应用有错误——不管是什么错误——它就会拒绝分享了,而且不给回应,不输出日志。即便是我,也不能知道原因。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值