当前位置: 首页 > news >正文

Java Azure开发 使用已有token字符串创建GraphServiceClient

一、背景说明

在已有的项目中,已经获取到了Graph的AccessToken并保存在内存里面。所以不希望再通过client secret或者certificate去创建GraphServiceClient对象。希望使用现有的token字符串来创建初始化创建GraphServiceClient从而来实现Graph其他API功能。

二、具体实现

2.1 需要Java Graph SDK依赖 加入到pom.xml文件内

 <!-- Microsoft Graph SDK for Java --><dependency><groupId>com.microsoft.graph</groupId><artifactId>microsoft-graph</artifactId><version>[5.0,)</version></dependency><!-- Azure AD Authentication SDK for Java --><dependency><groupId>com.azure</groupId><artifactId>azure-identity</artifactId><version>[1.3,)</version></dependency>

2.2 代码片段

  public static GraphServiceClient initGraphServiceClient() {IAuthenticationProvider authProvider = new IAuthenticationProvider() {@Overridepublic CompletableFuture<String> getAuthorizationTokenAsync(URL requestUrl) {CompletableFuture<String> future = new CompletableFuture<>();future.complete(Your_AccessToken);return future;}};return GraphServiceClient.builder().authenticationProvider(authProvider).buildClient();}
三、测试

下面代码是实现调用创建GraphServiceClient,调用graph api发送带附件的邮件。

	public static String sendMail() {try {String mfrom = "xxxx@outlook.com";String to = "xxxx@outlook.com";GraphServiceClient<Request> graphClient = initGraphServiceClient();Message message = new Message();message.subject = "Meet for lunch?";ItemBody body = new ItemBody();body.contentType = BodyType.TEXT;body.content = "The new cafeteria is open.";message.body = body;LinkedList<Recipient> toRecipientsList = new LinkedList<Recipient>();Recipient toRecipients = new Recipient();EmailAddress emailAddress = new EmailAddress();emailAddress.address = to;toRecipients.emailAddress = emailAddress;toRecipientsList.add(toRecipients);message.toRecipients = toRecipientsList;// 构建附件LinkedList<Attachment> attachmentsList = new LinkedList<Attachment>();FileAttachment attachments = new FileAttachment();attachments.name = "hello word.txt";attachments.oDataType = "#microsoft.graph.fileAttachment";attachments.contentType = "text/plain";attachments.contentBytes = Base64.getDecoder().decode("SGVsbG8gV29ybGQh");attachmentsList.add(attachments);AttachmentCollectionResponse attachmentCollectionResponse = new AttachmentCollectionResponse();attachmentCollectionResponse.value = attachmentsList;AttachmentCollectionPage attachmentCollectionPage = new AttachmentCollectionPage(attachmentCollectionResponse, null);message.attachments = attachmentCollectionPage;// 以指定用户邮箱发送邮件graphClient.users(mfrom).sendMail(UserSendMailParameterSet.newBuilder().withMessage(message).withSaveToSentItems(true).build()).buildRequest().post();log.info("send email success");return "success";} catch (Exception e) {e.printStackTrace();log.error("send email error : {}", e.getMessage());return e.getMessage();}}

相关文章:

Java Azure开发 使用已有token字符串创建GraphServiceClient

一、背景说明 在已有的项目中&#xff0c;已经获取到了Graph的AccessToken并保存在内存里面。所以不希望再通过client secret或者certificate去创建GraphServiceClient对象。希望使用现有的token字符串来创建初始化创建GraphServiceClient从而来实现Graph其他API功能。 二、具体…...

【Qt】消息机制和事件

文章目录 事件event()事件过滤器案例&#xff1a;检测鼠标事件案例&#xff1a;定时器 事件 事件&#xff08;event&#xff09;是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口需要重新绘制的时候&#xff0c;都会发出一个相应的事…...

爬虫模拟用户登录

使用爬虫模拟用户登录过程一般包括以下几个步骤&#xff1a; 导入所需的库&#xff1a;一般需要导入requests和BeautifulSoup库来发送HTTP请求和解析HTML。 import requestsfrom bs4 import BeautifulSoup 发送GET请求获取登录页面&#xff1a;使用requests库发送GET请求&#…...

asp.net企业招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计

一、源码特点 asp.net 企业招聘管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 asp.net企业招聘管理系统 二、功…...

艾泊宇产品战略:假如中国禁止直播带货,网红和店家该如何应对?

近日&#xff0c;印尼宣布将禁止直播带货&#xff0c;这一消息引起了广泛关注。有人欢喜有人忧&#xff0c;很多人为此拍手叫好&#xff0c;但也有很多人为此感到担忧。 今天&#xff0c;我们就来做一个战略推演&#xff0c;假设中国也禁止直播带货&#xff0c;入局直播带货者…...

C#调用C/C++从零深入讲解

C#调用非托管DLL从零深入讲解 一、结构对齐 结构对齐是C#调用非托管DLL的必备知识。 在没有#pragma pack声明下结构体内存对齐的规则为: 第一个成员的偏移量为0,每个成员的首地址为自身大小的整数倍子结构体的第一个成员偏移量应当是子结构体最大成员的整数倍结构体总大小…...

MyBatis篇---第五篇

系列文章目录 文章目录 系列文章目录一、MyBatis 中见过什么设计模式&#xff1f;二、MyBatis 中比如 UserMapper.java 是接口&#xff0c;为什么没有实现类还能调用&#xff1f; 一、MyBatis 中见过什么设计模式&#xff1f; 二、MyBatis 中比如 UserMapper.java 是接口&#…...

十三水中各种牌型判断LUA版

近期回归程序行业&#xff0c;由于业务需求需要做十三水游戏&#xff0c;什么是十三水就不在多讲&#xff0c;下面是判断十三水牌型的方法&#xff08;带大小王&#xff09; GetSSSPaiType {}; local this GetSSSPaiType; local huaseTable {}; local numTable {}; functi…...

2023.10.19 关于设计模式 —— 单例模式

目录 引言 单例模式 饿汉模式 懒汉模式 懒汉模式线程安全问题 分析原因 引言 设计模式为编写代码的 约定 和 规范 阅读下面文章前建议点击下方链接明白 对象 和 类对象 对象和类对象 单例模式 单个实例&#xff08;对象&#xff09;在某些场景中有特定的类&#xff0c;…...

4个鲜为人知的Python迭代过滤函数

在Python中&#xff0c;迭代器可以帮助你编写更多Pythonic的代码&#xff0c;并在处理长序列时提高效率&#xff0c;内置的itertools模块提供了几个有用的函数来创建迭代器。 当你只需要遍历迭代器、检索序列中的元素并对其进行处理&#xff0c;而无需将它们存储在内存中时&am…...

使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上

之前一直用e.getMessage()来获取错误信息 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ClassF…...

音乐的数字未来:虚拟演唱会与TikTok的巅峰融合

在数字时代&#xff0c;音乐产业正在经历着革命性的变革。虚拟演唱会与TikTok的融合正引领着音乐的数字未来&#xff0c;为艺术家、粉丝和创作者带来了前所未有的互动性和娱乐体验。本文将深入探讨这一巅峰融合&#xff0c;以揭示音乐产业的新前景。 虚拟演唱会的崛起 虚拟演唱…...

基于图像识别的跌倒检测算法 计算机竞赛

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于图像识别的跌倒检测算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…...

NSS [SWPUCTF 2021 新生赛]PseudoProtocols

NSS [SWPUCTF 2021 新生赛]PseudoProtocols 先看题目&#xff0c;题目要求我们先找到hint.php。 看这个get请求头&#xff0c;我们先用php://filter协议读一波 得到提示&#xff0c;让我们前往/test2222222222222.php 源码如下 <?php ini_set("max_execution_time&qu…...

字节码进阶之JVM Attach API详解

字节码进阶之JVM Attach API详解 文章目录 字节码进阶之JVM Attach API详解附加到虚拟机加载代理和获取信息分离虚拟机 使用Attach API的基本步骤1. **获取虚拟机实例**&#xff1a;2. **附加到虚拟机**&#xff1a;3. **加载代理或获取信息**4. **从虚拟机分离**&#xff1a;…...

Kubernetes 部署 kubeflow1.6.1

前言 安装前请注意捋清楚版本关系&#xff0c;如kubeflow版本对应的K8S版本及其相关工具版本等等 我们此处使用的是是kubeflow-1.6.1和K8s-v1.22.8 单机部署 部署K8S 初始化Linux 1.关闭selinux setenforce 0 && sed -i "s/SELINUXenforcing/SELINUXdisable…...

设计模式:建造者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)

上一篇《策略模式》 下一篇《适配器模式》 简介&#xff1a; 建造者模式&#xff0c;它是一种对象构建模式&#xff0c;它提供了一种构建对象的最佳方式。这种模式适用于当对象的构建过程需要涉及到多个部分&#xff…...

Maxon Cinema 4D 2024:打造独一无二的视觉效果 模拟模块大更新

在视觉效果和3D建模领域&#xff0c;Maxon的Cinema 4D一直以其卓越的性能和创新的功能引领着时代潮流。今天&#xff0c;我们很高兴地宣布推出最新版本——Maxon Cinema 4D 2024&#xff08;C4D 2024&#xff09;&#xff0c;它将再次提升行业标准&#xff0c;为设计师提供更强…...

16.2 ARP 主机探测技术

ARP &#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;&#xff0c;是一种用于将 IP 地址转换为物理地址&#xff08;MAC地址&#xff09;的协议。它在 TCP/IP 协议栈中处于链路层&#xff0c;为了在局域网中能够正确传输数据包而设计&#xff0c;…...

三级等保-linux服务器三权分立设置

安全问题 安全控制点 风险分析 风险等级 标准要求 加固建议 服务器未严格按照系统管理员权限、审计管理员权限、安全管理员权限进行分配管理员账户&#xff0c;未实现管理员用户的最小权限划分。 访问控制 可能存在管理员越权操作的风险 中 d)应授予管理用户所需的最…...

宁德时代斥资41亿入股中恒投资科技 后者实控人朱国锭已未任职

雷递网 雷建平 4月8日杭州中恒电气股份有限公司&#xff08;证券代码&#xff1a;002364 证券简称&#xff1a;中恒电气&#xff09;今日发布公告&#xff0c;称公司股东朱国锭、包晓茹女士拟引进宁德时代对中恒科技投资进行投资&#xff08;简称“拟议增资”&#xff09;。各方…...

从设备树到挂载点:实战UBI文件系统在NAND Flash上的完整部署

1. 为什么选择UBI文件系统&#xff1f; 在嵌入式系统中使用NAND Flash存储数据时&#xff0c;我们常常会遇到坏块管理、磨损均衡等棘手问题。传统的JFFS2/YAFFS2文件系统虽然也能工作&#xff0c;但维护成本较高。UBI&#xff08;Unsorted Block Images&#xff09;文件系统作为…...

解决中文文献管理痛点:茉莉花插件如何提升学术研究效率

解决中文文献管理痛点&#xff1a;茉莉花插件如何提升学术研究效率 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 副标题&#x…...

别再手动改参数了!用MATLAB脚本一键配置Simulink模型(附.m文件模板)

MATLAB脚本自动化配置Simulink模型的工程实践 每次打开Simulink模型都要重复修改几十个模块参数&#xff1f;还在为版本迭代时参数同步问题头疼&#xff1f;电气控制系统仿真中&#xff0c;模型参数的统一管理和快速配置直接影响开发效率。本文将分享如何用MATLAB脚本实现Simul…...

Super Qwen Voice World多说话人合成展示:会议场景模拟应用

Super Qwen Voice World多说话人合成展示&#xff1a;会议场景模拟应用 1. 引言 想象一下&#xff0c;你正在准备一场重要的线上会议演示&#xff0c;需要模拟不同角色的发言和互动。传统方式可能需要找多个配音演员&#xff0c;花费大量时间和成本。但现在&#xff0c;通过S…...

2026年盘点:谁在引领互联网医疗软件的口碑与运营新风向?

随着2026年的到来&#xff0c;互联网医疗行业已从早期的“跑马圈地”进入“精耕细作”的下半场。单纯的技术堆砌或一张互联网医院牌照&#xff0c;已不再是制胜法宝。市场口碑与持续运营能力&#xff0c;成为检验一家技术服务商价值的核心标尺。那么&#xff0c;究竟是谁在引领…...

Neeshck-Z-lmage_LYX_v2代码实例:Streamlit交互界面开发与参数绑定逻辑

Neeshck-Z-lmage_LYX_v2代码实例&#xff1a;Streamlit交互界面开发与参数绑定逻辑 1. 项目核心&#xff1a;一个更聪明的本地绘画工具 如果你用过一些AI绘画工具&#xff0c;可能会遇到几个头疼的问题&#xff1a;想换个画风得重启软件、调参数像开盲盒、电脑配置不够直接卡…...

Llama Factory零代码微调大模型:5分钟上手Qwen实战教程

Llama Factory零代码微调大模型&#xff1a;5分钟上手Qwen实战教程 1. 前言&#xff1a;为什么选择Llama Factory&#xff1f; 大模型微调一直是AI工程师的必备技能&#xff0c;但传统方法需要编写大量代码&#xff0c;配置复杂环境&#xff0c;让很多初学者望而却步。Llama …...

Qwen3.5-2B效果展示:低参数模型在中文长文本摘要与英文翻译中的准确表现

Qwen3.5-2B效果展示&#xff1a;低参数模型在中文长文本摘要与英文翻译中的准确表现 1. 轻量化多模态模型概述 Qwen3.5-2B是Qwen3.5系列中的轻量化版本&#xff0c;仅有20亿参数规模&#xff0c;专为低功耗、低门槛部署场景设计。这款模型特别适合在端侧设备和边缘计算环境中…...

避坑指南:Node-RED读取西门子PLC模拟量值,为什么你的DB块数据总是0?(附S7-1200配置全流程)

Node-RED与西门子S7-1200 PLC通信避坑实战&#xff1a;从DB块数据异常到稳定读取的完整解决方案 当工业物联网项目遇到Node-RED与西门子PLC通信时&#xff0c;DB块数据读取为0的问题就像一道无形的墙&#xff0c;让不少开发者陷入调试泥潭。上周深夜&#xff0c;我的工作站屏幕…...