前言

最近在使用第三方登录和分享的过程中遇到了很多问题,一方面可以归结为自己经验的不足,另一方面其实也说明了官方文档的含糊不清。这篇博文不会写关于如何使用第三方登录分享,因为官方文档已经写明了步骤,这里要写的东西是官方文档里面没用说明的一些问题,也是我自己在摸索的过程中发现和解决的问题。


一、微博登录和分享

微博sdk的集成过程官方下载的sdk文档中已经基本说明清楚了,这里不提了,说两个经常遇到过问题。

1、登录后停留在授权页,也就是登录后没有返回我们的应用,排除代码方面的原因后,还有几个原因导致这个问题的发生。

a.在应用程序的管理中心中没用填写应用程序包名和签名,或者在高级信息里面没用填写oauth2.0授权设置

android 第三方ModbusRTU_包名


android 第三方ModbusRTU_包名_02

如果这个地方填写错误或者没用填写的话,会导致授权后无法返回应用。


   b.包名和签名填写正确并且填写了oauth授权页,还是出现无法返回应用的情况

2、第二个问题也是比较常见的,sso package or sign error

这种情况一般是应用程序签名的问题造成的,首先确认上面的签名和包名是否填写正确,包名这个就不用多说了,清单文件中的manifest节点下的package属性的值就是包名

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yang.abc"


 这里着重说一下签名的问题,因为这个问题也是经常导致出现这个sso package or sign error出现的原因。

签名的话用的是微博官方提供的签名工具,这里有个需要注意的地方:签名是根据你装在手机上面的应用来进行的,如果你的应用开发使用的是debug.keystore也就是eclipse默认的方式安装到手机上的,那么这个签名就是不是正式版使用的,如果你最终使用发布应用的时候还使用这个签名,那么这个key很显然是不正确的,就会发现上面的sso package or sign error错误。所以如果你的应用最终是要上线的,那么将apk安装到签名导出安装到手机后,再使用微博官方提供的签名工具运行一遍,得到签名,将这个签名填到管理中心的基本信息中,那么这个appkey才是合法的,使用不会出现上述的问题。

android 第三方ModbusRTU_第三方登录_03


3、还有一个问题,至今不知道是什么原因造成的,还要继续探索。

使用sso登录的时候,当手机上已经安装了微博客户端,会正常调用sso登录

当手机上没有安装微博客户端时,按照常理应该是调用网页登录,但是却出现了空指针的异常,而且debug会发现对象根本不为空,这个问题一直困扰着我,等找到解决方法了,补充上这一块。


二、微信第三方登录和分享


一个很常见的问题:分享的时候如果没有登录微信,调出微信登录窗口,正确登录后点击分享无反应。

这个问题查了下,发现很多人出现了。最终,经过排查,确认是申请的appkey信息有误造成的。

其实这个问题也是签名的错误的原因造成的,debug.keystore和发布的keystore不同导致了这个问题。

在使用微信官方提供的签名工具获取应用签名的时候,要首先在手机上安装有用发布keystore签名的应用,然后得到的签名才是正确的签名,签名正确了使用appkey才不会出现上面的无法分享或者登录的问题。