android studio获取微信的openid示例

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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值