本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
第三方登录和分享过程中难免遇到各种纠结的问题,下面将我遇到的分享给大家。
先说第三方登录
1、首先要搞清楚后台同事要你传的是code还是token,因为先传code,token值后台同事也可以获得。正常的步骤是先获得code,再拿code去取得token。
2、新浪和QQ的第三方登录,网上例子大把,但要做奇虎和支付宝的比较困难,还好网上找到一个例子,加部分注释分享给大家:http://download.csdn.net/detail/liuxian13183/7456803
分享:
1、如果经常不出分享或者分享失败,要看你在后台写的签名与手机目前签名是否一致。关于如何查看签名,新浪这里有签名工具app_signatures.apk,下载地址详见:https://github.com/sinaweibosdk/weibo_android_sdk
这里有个小建议:在测试阶段,建议用debug.keystore来签名,然后把签名写到新浪后台,记得包名要一致;正式发包,再用自己项目独立的keystore来打包,然后到后台改下签名。
2、SSO登录弹不出弹窗;原因要么是上边的,要么是分享和登录混淆,你把SSO登录写到实现IWeiboHandler.Response接口的类中
3、分享图片的时候,新浪告诉你要填binary对象,ios的简单,直接什么NData转换,这里试了各种byte[]都不成功,最终是使用file对象,也就是把图片保存下来,把file对象传给新浪终于解决这个问题。
4、某些公司的图片做成背景色是透明的,格式是PNG,导致分享时会被自动加上黑色背景。这个问题经证实后,怎么解决呢?
首先要按格式保存bitmap值:
/**
*
* @param drawable
* @return
*/
public static Bitmap drawable2Bitmap(Drawable drawable) {
// 取 drawable 的长宽
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
// 取 drawable 的颜色格式
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
// 建立对应 bitmap
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
// 建立对应 bitmap 的画布
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
// 把 drawable 内容画到画布中
drawable.draw(canvas);
return bitmap;
}然后给写一张白色背景
/**
* 给图片画一张背景
* @param color
* @param orginBitmap
* @return
*/
public static Bitmap drawBg4Bitmap(int color, Bitmap orginBitmap) {
Paint paint = new Paint();
paint.setColor(color);
Bitmap bitmap = Bitmap.createBitmap(orginBitmap.getWidth(),
orginBitmap.getHeight(), orginBitmap.getConfig());
Canvas canvas = new Canvas(bitmap);
canvas.drawRect(0, 0, orginBitmap.getWidth(), orginBitmap.getHeight(), paint);
canvas.drawBitmap(orginBitmap, 0, 0, paint);
return bitmap;
}这样就完美解决透明背景的PNG图片,上传后背景变黑的问题。
5、微信分享总是不成功,原因:第一可能是微信的KEY不对,第二可能没对微信进行混淆保护,第三可能是图片大于32k(这种根本不会弹出微信分享)
附:Sina、Alipay、QQ、Qihoo第三方网页登录和部分代码