【问题标题】:How do I use Manatee.Trello with multiple user accounts?如何将 Manatee.Trello 与多个用户帐户一起使用?
【发布时间】:2018-05-14 04:13:29
【问题描述】:

我一直在尝试以下方法来检索数据:

    void InitializeTrello()
    {
        TrelloConfiguration.Serializer = new ManateeSerializer();
        TrelloConfiguration.Deserializer = new ManateeSerializer();
        TrelloConfiguration.JsonFactory = new ManateeFactory();
        TrelloConfiguration.RestClientProvider = new Manatee.Trello.WebApi.WebApiClientProvider();
        TrelloConfiguration.ThrowOnTrelloError = true;
    }

    T DownloadDataFromTrello<T>(TrelloAccount account, Func<T> func)
    {
        TrelloConfiguration.Cache.Clear();
        TrelloAuthorization.Default.AppKey = account.AppKey;
        TrelloAuthorization.Default.UserToken = account.UserToken;
        T result = func();
        TrelloProcessor.Flush();
        return result;
    }

使用不同的AppKeyUserToken 参数多次调用方法DownloadDataFromTrello。尽管在函数内部调用了TrelloConfiguration.Cache.Clear(),但每次调用我都会收到相同的数据。

我想使用库而不使用卸载静态类的肮脏技巧并保留延迟加载功能。有谁知道如何正确使用这个库和多个用户帐户?

【问题讨论】:

    标签: c# .net trello manatee.trello


    【解决方案1】:

    所有实体构造函数都采用第二个参数:TrelloAuthorization,默认为 TrelloAuthorization.Default。实体实例在其整个生命周期中都使用此授权。

    var customAuth = new TrelloAuthorization
    {
        AppKey = "your app key",
        UserToken = "a user's token"
    }
    var card = new Card("card id", customAuth);
    

    默认缓存仅将实体 ID 视为键,因此即使您更改默认授权,如果系统从缓存中提取它们(例如卡是作为List.Cards 枚举的一部分下载)。如果您通过构造函数显式创建实体(如上),则新实体将添加到缓存中,但只会返回第一个实体,因为它仅在 ID 上匹配。

    要将身份验证视为密钥的匹配项,我必须更新默认缓存或公开身份验证,以便您可以编写自己的缓存并设置TrelloConfiguration.Cache 属性。我不确定我现在更喜欢哪个。

    使用自定义身份验证(可能与定期清除缓存相结合)是目前您的最佳选择。如果这是您想要的功能,请随时创建问题或在此处告诉我。

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2011-10-03
      • 2014-10-15
      相关资源
      最近更新 更多