1、在你的Android项目中,添加微信SDK的依赖。在build.gradle文件中添加如下内容:
dependencies {
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.0'
}
2、在项目的AndroidManifest.xml文件中,添加微信的Activity和必要的权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application>
<!-- 其他配置 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop"/>
</application>
3、创建一个包名为com.yourpackage.wxapi的包,并在该包下创建一个继承自WXCallbackActivity的类WXEntryActivity。这个类是用来接收微信SDK的返回结果的。
package com.iwuke.dance.wxapi;
import android.app.Activity;
import android.os.Bundle;
import com.iwuke.dance.http_request.PathUrl;
import com.iwuke.dance.util.LogUtil;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import java.util.HashMap;
import java.util.Map;
/**
* @author: 魏从响
* @date: 2025/9/18
*/
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, "你的appid", false);
api.handleIntent(getIntent(), this);
}
@Override
public void onReq(BaseReq baseReq) {
// 微信向第三方应用发起请求会调用这个方法
}
@Override
public void onResp(BaseResp baseResp) {
// 第三方应用向微信发送请求后,微信返回结果会调用这个方法
LogUtil.logD("获取微信类型", String.valueOf(baseResp.getType()));
if (baseResp.getType() == 1) {
SendAuth.Resp resp = (SendAuth.Resp) baseResp;
if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
// 获取到code后,需要使用code去微信服务器换取access_token和openid
String code = resp.code;
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?" +
"appid=" + "你的appid" +
"&secret=" + "你的appSecret" +
"&code=" + code +
"&grant_type=authorization_code";
//使用Retrofit或者OkHttp等库来发送网络请求,请求url
Map<String,String> map = new HashMap<>();
PathUrl.withdraw(url, map, new PathUrl.DataCallBack<WeChatCallbackBean>() {
@Override
public void onSucess(WeChatCallbackBean bean) {
//获取微信回调结果(这里需要调用微信的网络接口,通常是在服务器端完成这个步骤)
// {
// "access_token": "",
// "expires_in": 0,
// "openid": "",
// "refresh_token": "",
// "scope": "",
// "unionid": ""
// }
}
@Override
public void onFail(String errorCode) {
}
});
}
}
}
}
4、在你的Activity中,发起登录请求
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
public class MainActivity extends AppCompatActivity {
private IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
api = WXAPIFactory.createWXAPI(this, "你的appid", true);
api.registerApp("你的appid");
}
public void loginWithWeChat() {
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
api.sendReq(req);
}
}
2559

被折叠的 条评论
为什么被折叠?



