如何序列化和反序列化 IGraphServiceClient 客户端对象?

How to serialize and Deserialize IGraphServiceClient client object?

我们正在开发一个使用 Microsoft Graph SDK 来实现 Excel/OneDrive 相关功能的项目。我们有一个用例,我们需要序列化和反序列化 IGraphServiceClient 客户端 reference/object。

我们试图反序列化该对象,但出现了 NotSerializableException 异常。我们正在探索 SDK 并找到 ISerializer.java class 但无法在 serialization/Deserialization 中使用它。

能否请您帮助我们解决这个问题?

UsernamePasswordProvider authProvider = 
  new UsernamePasswordProvider(clientId, scopes, userName, password, null, tenantid, clientSecret);

IGraphServiceClient client= GraphServiceClient
   .builder()
   .authenticationProvider((IAuthenticationProvider) authProvider).buildClient());

这是不可能的,坦率地说,serializing/deserializing 客户端本身没有任何价值。

真正想要的是请求offline_access范围,这样您将在[=12]的同时收到refresh_token =] 您用来调用 Microsoft Graph 的方法。然后您可以存储 refresh_token 字符串并使用它来接收 updated/fresh access_token。然后,您可以在需要调用 Microsoft Graph 时使用该令牌创建一个新的 IGraphServiceClient 实例。

您可以获取如下IAuthenticationProvider。

public static void main(String[] args) {
        IAuthenticationProvider authProvider =  new UsernamePasswordProvider(
                "{clientId}",
                Arrays.asList("https://graph.microsoft.com/User.Read"),
                "{userName}",
                "{password}",
                NationalCloud.Global,
                "{tenantId}",
                "{clientSecret}");

        GraphServiceClient graphClient = (GraphServiceClient) GraphServiceClient.builder()
                .authenticationProvider(authProvider)
                .buildClient();

        User user = graphClient.me().buildRequest().get();
    }

顺便说一句,如果你使用Maven安装microsoft-graph-auth,会有一些问题。目前源代码和 Maven 存储库不匹配。 microsoft-graph-auth的源码没问题。因此,您可以下载 msgraph-sdk-java-authsource code 并将其导出为 jar 文件。使用此 jar 文件而不是使用 com.microsoft.graph.0.1.0-SNAPSHOT。这会起作用。

另一种方法是使用Gradle安装microsoft-graph-auth。这很好用。

repository {
    jcenter()
    jcenter{
        url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
    }
}

dependency {
    // Include the sdk as a dependency
    compile('com.microsoft.graph:microsoft-graph-auth:0.1.0-SNAPSHOT')
}