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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。