<span style="font-size:12px;"> </span>
我在使用老是出现一些莫名其妙的问题,如qq登陆,明明用别人的demo还有自己写个demo,都能正常运行和获取到用户信息,但是集成到自己的项目就不行,获取不到信息,试了好久都不行,还有就是新浪微博登录时无法调用客户端如果把客户端卸掉网页版登陆是正常的,但是友盟没有提供选择客户端或是网页版登录的选择,所以新浪微博也是没办法正常登录,只有微信能正常运行,但也没那么简单,有一个大坑,例如我的apk,包名(也就是AndroidManifest.xml中的包名)是com.kingdowin.gosu,你项目中必须有一个包名是com.kingdowin.gosu.wxapi,下面有一个类是WXEntryActivity.java,否则就获取不到用户信息,记好是必须。
也许是自己太笨,终上所述,我只有选择官方SDK。这三种登录方式都需要签名打包后才能正常运行,OK?!一、QQ开放平台,地址:http://open.qq.com/,下载一个demo,把自己APPID替换一下就行,然后把代码和jar包集成到你的项目中。qq登录还是比较简单的。有时会出现非官方授权请到应用宝下载,是因为运行时需要签名包,然后就正常了,但是腾讯贴心的提供一个测试账号即使不签名打包也行,就是登录你注册基本信息时的
Q号,如图
二、微信开放平台,地址:https://open.weixin.qq.com/,下载一个demo运行一下,把自己的APPKEY替换一下,但是官方demo,没有授权的界面,这是要闹哪样?需要自己加几行代码
<span style="font-size:12px;">SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "wechat_sdk_demo_test"; api.sendReq(req);</span>主要代码
<span style="font-size:12px;"><pre name="code" class="java">public class WXEntryActivity extends Activity implements IWXAPIEventHandler{ private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.flash_activity); <span style="color:#3366ff;">api = WXAPIFactory.createWXAPI(this, Property.wxLoginInfo.getAppid(), false); api.handleIntent(getIntent(), this);</span> } @Override public void onReq(BaseReq arg0) { // TODO Auto-generated method stub } @Override public void onResp(BaseResp resp) { Bundle bundle = new Bundle(); switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: // 可用以下两种方法获得code // resp.toBundle(bundle); // Resp sp = new Resp(bundle); // String code = sp.code;<span style="white-space:pre"> // 或者 String code = ((SendAuth.Resp) resp).code; // 上面的code就是接入指南里要拿到的code,可通过下面地址获取需要的openId和accessToken // <span style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);">"https://api.weixin.qq.com/sns/oauth2/access_token?" +</span><br style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);" /><span style="color: rgb(54, 46, 43); line-height: 20px; background-color: rgb(255, 249, 239);">// "appid="+Constant.WEIXIN_APP_ID(即自己的APPID)+"&secret="+Constant.WEIXIN_APP_SECRET(即自己的APPSECRET)+"&code="+code(即获取到的code)+"&// grant_type=authorization_code"; 止此完事!!!!!哈哈</span> break; default: break; } } }</span>
我就是没有在意才导致浪费了很长时间也没调试成功,和友盟的是一样的,是不是很变态啊,把我本来的包名和类名全都改了,没办法呀!
三、微博开放平台,地址:http://open.weibo.com/。下载个demo替换成自己的APPKEY,然后替换一下自己的也是一肚子苦水要倒啊。妈的,开始下载一个官方demo一切都配置好了,还是报 sso package or sign error,抱头苦死不得其解,后来经过网上查阅资料和分析,可能是下载了一个老版本。后来经过自己一番研究和实验,发现了这个地址上的demo还是靠谱的,https://github.com/sinaweibosdk/weibo_android_sdk。立马生效,但是遗憾的是无论如何也不能调用微博客户端登录,到授权页面后直接闪退,获取不到用户信息,无奈呀,最后只是调用网页版登录可行,有经验的朋友可以告知一下啊,还有个经常报的错就是 redirect_uri_dismatch,那是因为你代码中的回调地址和你在开放平台中注册的地址不一样,一般都写成REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";就行
原文地址:http://blog.csdn.net/gaolei1201/article/details/44680291