app 微信授权登录,

  app 微信授权登录,

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  安卓应用和微信授权登录、分享完整对接

  

准备

  账号体系

  注册微信开放平台,创建移动应用,填写一系列的信息,在应用平台填写应用签名和包名,审核通过之后,取得应用编号和密钥

  加载sdk和初始化

  加载微信软件开发工具包

  实现com。腾讯。嗯。打开SDK:我们聊天-SDK-Android-没有-MTA:初始化

  公共类应用程序扩展应用程序{

  公共静态IWXAPI iwxapi

  public void onCreate() {

  超级棒。oncreate();

  //通过WXAPIFactory工厂,获取IWXAPI的实例

  iwx API=wxapifactory。createwxapi(this,BuildConfig .WXAPP_ID,true);

  //将应用的应用编号注册到微信

  iwxapi.registerApp(BuildConfig .wx app _ ID);

  //建议动态监听微信启动广播进行注册到微信

  注册接收者(新的BroadcastReceiver() {

  @覆盖

  公共接收时无效(上下文语境,意图意图){

  //将该应用注册到微信

  iwxapi.registerApp(BuildConfig .APPLICATION _ ID);

  }

  }、新IntentFilter(ConstantsAPI .ACTION _ REFRESH _ wx app));

  }

  }WXAPP_ID为开放平台提供的应用编号

  应用程序身份为应用包名

  

授权登录部分

   在应用根目录(/java/com.xxx.xxx/)新建Packagewxapi,在wxapi新建活动名为:WXEntryActivity,大概长这样:/Java/com。XXX。XXX/wx API/wxentryactivity。爪哇

  公共类WXEntryActivity扩展活动实现IWXAPIEventHandler {

  @覆盖

  受保护的void onCreate(Bundle saved instancestate){

  超级棒。oncreate(savedInstanceState);

  //隐藏状态栏

  getWindow().setFlags(WindowManager .LayoutParams。窗口管理器.布局参数。FLAG _全屏);

  //接收到分享以及登录的目的传递处理意图方法,处理结果

  app。iwx API。处理意图(getIntent(),this);

  }

  @覆盖

  请求时公共无效(基本请求基本请求){

  }

  @覆盖

  esp上的公共void(基本响应基本响应){

  开关(baseResp.errCode) {

  案例库错误代码。ERR_OK: //微信回调成功

  字符串代码=((SendAuth .baseResp).代码;

  //取得微信的代码,就可以干很多事情

  finish();

  打破;

  案例库错误代码。ERR_AUTH_DENIED://用户拒绝授权

  finish();

  打破;

  案例库错误代码。ERR_USER_CANCEL://用户取消

  finish();

  打破;

  默认值:

  finish();

  打破;

  }

  }

  }通过密码取得打开信息,比如openid,访问令牌等一系列信息。

  私有void getOpenInfo(字符串代码){

  OkHttpUtils.get().网址(https://API。微信。QQ。com/SNS/oauth 2/access _ token’)。addParams(appid ,BuildConfig .WXAPP_ID)。addParams(secret ,BuildConfig .WXAPP_Secret)。addParams(code ,code)。addParams(grant_type , authorization_code )。构建()。execute(new StringCallback() {

  @覆盖

  public void onError(Call call,Exception e,int id) {

  吐司。制作文本(wxentryactivity。“这,”微信授权失败,吐司。长度_长)。show();

  finish();

  }

  @覆盖

  公共void on response(String response,int id) {

  JSON对象JSON对象=JSON对象。解析对象(响应);

  string openId=JSON对象。getstring( openId );

  string access _ token=JSON对象。getstring( access _ token );

  Log.v(openId ,openId - access _ token);

  //取得信息又可以干很多事情

  //在这里可以对接自己的系统的用户信息等

  finish();

  }

  });

  }通过信息可以查询用户昵称,头像等信息。

  private void get userinfo(String access _ token,String openid) {

  OkHttpUtils.get().网址(https://API。微信。QQ。com/SNS/userinfo’)。addParams(access_token ,access_token)。addParams(openid ,openid)。构建()。execute(new StringCallback() {

  @覆盖

  public void onError(Call call,Exception e,int id) {

  finish();

  吐司。制作文本(wxentryactivity。“这,”微信授权失败,吐司。长度_长)。show();

  }

  @覆盖

  公共void on response(String response,int id) {

  //JSON对象JSON对象=JSON对象。解析对象(响应);

  Log.v(response ,响应);

  }

  });

  }

分享部分

   分享图片:

  /**

  *骨形态发生蛋白分享图片

  *宽度缩略图宽

  *高度缩略图高

  *感觉分享场景0:分享到对话,1:朋友圈,2:分享到收藏

  */

  公共静态空图像(位图bmp,int width,int height,int sense){

  //初始化WXImageObject和WXMediaMessage对象

  WXImageObject imgObj=new WXImageObject(BMP);

  WXMediaMessage msg=new WXMediaMessage();

  msg.mediaObject=imgObj

  //设置缩略图

  位图缩略图BMP=位图。createscaledbitmap(BMP,width,height,true);

  //BMP。recycle();

  味精。thumb data=bmpToByteArray(thumb BMP);

  //构造一个请求

  SendMessageToWX .请求请求=新的SendMessageToWX .req();

  请求。事务=构建事务( img );

  req.message=消息

  req.scene=sence

  请求。用户OpenID=app。用户信息。获取OpenID();

  //调用美国石油学会(美国石油协会)接口,发送数据到微信

  app。iwx API。发送请求(req);

  }分享链接

  /**

  *网址:分享链接

  *标题:分享标题

  *desc:分享描述

  *thumbBmp:分享缩略图

  *感觉:分享场景0:分享到对话,1:朋友圈,2:分享到收藏

  */

  公共静态无效Url(字符串网址,字符串标题、字符串desc,位图thumbBmp、int sense){

  //初始化一个WXWebpageObject,填写全球资源定位器(统一资源定位器)

  WXWebpageObject网页=new WXWebpageObject();

  网页。网页.网页Url=url

  //用WXWebpageObject对象初始化一个WXMediaMessage对象

  wx media message msg=new wx media message(网页);

  消息标题=标题;

  味精。描述=desc;

  味精。thumb data=bmpToByteArray(thumb BMP);

  //构造一个请求

  SendMessageToWX .请求请求=新的SendMessageToWX .req();

  请求。transaction=构建事务(网页);

  req.message=消息

  req.scene=sence

  请求。用户OpenID=app。用户信息。获取OpenID();

  //调用美国石油学会(美国石油协会)接口,发送数据到微信

  app。iwx API。发送请求(req);

  }俩辅助函数

  私有静态字符串构建事务(字符串类型){

  return (type==null)?字符串。(系统的值。当前时间millis()):类型system。当前时间毫秒();

  }

  私有静态字节[] bmpToByteArray(位图bmp) {

  ByteArrayOutputStream output=new ByteArrayOutputStream();

  bmp.compress(位图CompressFormat。巴新,100,输出);

  byte[]结果=输出。tobytearray();

  尝试{

  输出。close();

  } catch(异常e) {

  e。printstacktrace();

  }

  返回结果;

  }

注意事项

  这个逼库经常加载失败,时不时的抽风

  实现com。腾讯。嗯。打开SDK:我们聊天-SDK-Android-没有-MTA:下载对应版本库如:微信-SDK-Android-无-mta-6.6.5.aar,放到激光诱导击穿光谱仪目录,手动加载即可

  android {

  编译版本28

  存储库{ //本地碱集料反应方式

  平面方向{

  目录库//这样我们就可以找到libs。文件夹中的碱集料反应文件

  }

  }

  }

  实现(名称:微信-SDK-Android-无-mta-6.6.5 ,分机: aar)分享之后关闭不掉的问题,也就是finish失效

  事实上在回调之后,不是BaseResp .错误代码。呃好的就完了,这里面得还有一层逻辑判断:

  esp上的公共void(基本响应基本响应){

  开关(baseResp.errCode) {

  案例库错误代码。ERR_OK:

  //在此处应该还需要判断回调成功类型。是登录还是分享,然后做相对应的操作

  switch (baseResp.getType()) {

  凯斯康斯坦萨皮COMMAND_SENDAUTH: //登录成功的回调

  字符串代码=((SendAuth .baseResp).代码;

  //登录待办事项

  打破;

  凯斯康斯坦萨皮COMMAND_SENDMESSAGE_TO_WX: //分享成功

  //分享待办事项

  吐司。制作文本(getApplicationContext(),分享成功!,吐司。长度_长)。show();

  finish();

  打破;

  默认值:

  finish();

  打破;

  }

  base resp . errcode . err _ User _ cancel://用户已取消

  finish();

  打破;

  默认值:

  finish();

  打破;

  }

  }[结束]

  推荐:java视频教程以上是对Android app和微信授权登录和分享完全对接(代码分享)细节的简要分析。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: