【问题标题】:Re-authenticate evernote app C#重新验证印象笔记应用程序 C#
【发布时间】:2016-07-22 01:26:27
【问题描述】:

第一次使用evernote 验证应用程序时,我看到了evernote 登录页面,在那里我可以验证我的应用程序。撤销访问权限后,我无法访问上传笔记或获取笔记本列表等功能。我该如何强制重新授权。过程再次发生? IE 在应用启动时再次显示印象笔记登录屏幕。这是目前我在 form.load() 中的代码:

// Be sure to put your own consumer key and consumer secret here.
ENSession.SetSharedSessionConsumerKey("your key", "your secret");

if (ENSession.SharedSession.IsAuthenticated == false)
{
    ENSession.SharedSession.AuthenticateToEvernote();
}

运行此程序时我没有收到任何错误,但是当我尝试上传笔记时却收到此错误:

Evernote.EDAM.Error.EDAMNotFoundException

感谢任何帮助,谢谢!

【问题讨论】:

    标签: c# windows api evernote


    【解决方案1】:

    查看source,看来您可以将ENSession.SharedSession.IsAuthenticated 设置为false,然后调用ENSession.SharedSession.AuthenticateToEvernote()。试一试,看看它是否有效?

    【讨论】:

    • ENSession.SharedSession.IsAuthenticated 是获取只有你不能设置它。所以我不能用它来解决这个问题。
    • 啊抱歉,我不会说 C# :(
    【解决方案2】:

    这个没试过,不过好像可以打电话

    ENSession.SharedSession.PerformPostAuthentication();
    

    然后检查

    ENSession.SharedSession.IsAuthenticated.
    

    如果结果为假,则循环回调用

    ENSession.SharedSession.AuthenticateToEvernote();
    

    【讨论】:

    • 不,这也不起作用。我仍然遇到与以前相同的 EDAM 错误。不过还是谢谢!
    【解决方案3】:

    我知道这是一个旧线程,但我只是在寻找相关内容时偶然发现了它。

    似乎使用 ENSession 或 ENSession advanced 的 Evernote SDK 没有提供取消身份验证的方法。然而,在反编译他们的 dll 之后,我注意到实际上有一个私有的 Unauthenticate 方法。所以理论上你可以使用反射,所以调用这个方法:

      var mi = typeof(ENSession).GetMethod("Unauthenticate", BindingFlags.NonPublic | BindingFlags.Instance);           
      mi.Invoke(ENSession.SharedSession, null);
    

    我确信 Evernote 将其设为私有是有原因的,所以我会小心调用它,但这应该可以解决问题。我在我的一个测试应用程序之一中尝试了此操作,在调用 Unauthenticate 后,我确认 ENSession.SharedSession.IsAuthenticated 为假,调用 ENSessionAdvanced.SharedSession.AuthenticateToEvernote() 确实会启动一个 Web 浏览器,要求您登录 Evernote。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多