前言

 分享到微信朋友圈的功能早已经有了,但微信登录推出并不久,文档写的也并不是很清楚,这里记录分享一下。

 正文

 一、准备

  注册、认证步骤自己来。微信开放平台:https://open.weixin.qq.com

 二、 代码

  2.1 唤起微信登录

   参考官网文档:资源中心/移动应用开放/接入指南/Android接入指南

private IWXAPI mWeixinAPI;  private void loginWithWeixin() {    if (mWeixinAPI == null) {      mWeixinAPI = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, false);    }    if (!mWeixinAPI.isWXAppInstalled()) {      //提醒用户没有按照微信      return;    }    mWeixinAPI.registerApp(WEIXIN_APP_ID);    SendAuth.Req req = new SendAuth.Req();    req.scope = WEIXIN_SCOPE;    req.state = WEIXIN_STATE;    mWeixinAPI.sendReq(req);  }

WEXIN_SCOPE :这里填的snsapi_userinfo,用snsapi_base提示没权限。

WEIXIN_STATE :用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。

不出意外就能唤起微信登录了。

  2.2 接收微信的请求及返回值

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,参考文档在AndroidManifest.xml注册Activity。

public class WXEntryActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    handleIntent(getIntent());  }  @Override  protected void onNewIntent(Intent intent) {    super.onNewIntent(intent);    handleIntent(intent);  }  private void handleIntent(Intent intent) {    SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());    if (resp.errCode == BaseResp.ErrCode.ERR_OK) {      //用户同意    }  }}

注意:这里和微信的例子写的有点不一样,不过结果是一样的,这个能取到code等信息,测试返回数据如下:

 E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_state xxx    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx    E/WXEntryActivity(14288): onCreate...key:_mmessage_appPackage com.tencent.mm    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_transaction null    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_lang zh_CN    E/WXEntryActivity(14288): onCreate...key:_wxapi_command_type 1    E/WXEntryActivity(14288): onCreate...key:_mmessage_content null    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_country null    E/WXEntryActivity(14288): onCreate...key:_mmessage_checksum [B@426358e8    E/WXEntryActivity(14288): onCreate...key:wx_token_key com.tencent.mm.openapi.token    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx    E/WXEntryActivity(14288): onCreate...key:_mmessage_sdkVersion 570490883    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errcode 0    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errstr null    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_openId null

 xxx     部分的内容我已经隐掉了,拿到code就能拿到access――token了,后续依据文档调用即可。

   这里你可以把WXEntryActivity的theme弄成透明的,然后再弹起来一个ProgressDialog进行后续的操作(提交你自己的服务器),就能和现有的界面完全融合了。

 三、注意:

  3.1 获取签名必须用release包。(所以你会发现微信、微博SDK取得值是一样,所以如果已经有了微博的签名可以直接拷贝到微信使用)

以上对Android 微信登录分享朋友圈的功能,有需要的朋友可以看下。

更多相关文章

  1. SDK踩坑全纪录
  2. 软件开发文档(以太网)
  3. android Fragment开发文档翻译 - 1
  4. android 中 XML 重点
  5. android中get方式和post方式提交数据到服务器的区别
  6. 网络连接和概述
  7. chromium-cronet库的编译用于Android和ios平台实现quic协议
  8. 开始: 其实对Android我只是略知皮毛中的皮毛,但是为什么会突然想来
  9. android网络请求框架Volley(二)

随机推荐

  1. 修改数据库为多用户模式
  2. sql语句优化之SQL Server(详细整理)
  3. 查询Sqlserver数据库死锁的一个存储过程
  4. SQL语句的并集UNION 交集JOIN(内连接,外连
  5. SQL Server中的SQL语句优化与效率问题
  6. sql 聚集索引和非聚集索引(详细整理)
  7. SQL SERVER数据库重建索引的方法
  8. SQL Server 压缩日志与减少SQL Server 文
  9. 针对Sqlserver大数据量插入速度慢或丢失
  10. ms sql server中实现的unix时间戳函数(含