async_wechat/official_account/
user.rs

1use crate::OfficialAccount;
2
3use super::core::UserInfoResponse;
4
5impl OfficialAccount {
6    pub async fn get_user_by_open_id(
7        &self,
8        open_id: &str,
9    ) -> Result<UserInfoResponse, Box<dyn std::error::Error>> {
10        let token = self.token().await?;
11
12        let url = format!(
13            "https://api.weixin.qq.com/cgi-bin/user/info?access_token={}&openid={}&lang=zh_CN",
14            token, open_id
15        );
16        let response = match self.client.get(url).send().await {
17            Ok(r) => r,
18            Err(e) => {
19                println!("json err: {:#?}", e);
20                return Err(e.into());
21            }
22        };
23
24        let result = match response.json::<UserInfoResponse>().await {
25            Ok(r) => r,
26            Err(e) => {
27                println!("json err: {:#?}", e);
28                return Err(e.into());
29            }
30        };
31
32        Ok(result)
33    }
34}