C# 无法脱机登录

C# 无法脱机登录,c#,.net,spotify,libspotify,C#,.net,Spotify,Libspotify,当互联网连接时,我可以使用用户名和密码登录。如果我在登录时断开internet连接,我仍然可以收听脱机列表。如果我重新连接internet,我将再次获得全部功能,而无需执行任何操作 但当互联网不可用时,当我启动我的应用程序时,我无法登录以收听脱机曲目 我尝试用blob而不是密码登录,但没有成功(无论是否使用internet)。我还玩过“rememberme”,但它似乎在我的应用程序重启后无法生存 在使用另一个字符串时,我尝试了空字符串(“”)以及IntPtr.Zero作为密码和blob 没有成功

当互联网连接时,我可以使用用户名和密码登录。如果我在登录时断开internet连接,我仍然可以收听脱机列表。如果我重新连接internet,我将再次获得全部功能,而无需执行任何操作

但当互联网不可用时,当我启动我的应用程序时,我无法登录以收听脱机曲目

我尝试用blob而不是密码登录,但没有成功(无论是否使用internet)。我还玩过“rememberme”,但它似乎在我的应用程序重启后无法生存

在使用另一个字符串时,我尝试了空字符串(“”)以及IntPtr.Zero作为密码和blob


没有成功。我做错了什么?

我认为@Kendall Frey一针见血,离线支持在libspotify中实现,但您可能至少需要在线才能开始。Spotify的移动和桌面客户端并非如此,但它们并非构建在Libsotify之上。很抱歉,我不相信有任何方法可以绕过此限制。

在以下条件下,脱机登录应该可以在libspotify中使用凭据blob工作:

  • 用户以前至少已成功联机登录一次
  • 您正在允许libspotify创建和维护磁盘缓存
  • libspotify能够将凭据正确写入该缓存,并在下次进行验证
  • 您正确地允许libspotify在应用程序退出时进行清理
缓存是这里的重要部分。您必须向libspotify传递磁盘上可读写的位置


另外,非常重要的一点是正确注销。您必须注销用户并等待该过程在应用程序退出时完成,或者调用
flush\u caches()
并等待该过程完成。否则,libspotify将无法正确写入缓存,以便下次启用脱机登录。如果您只是在没有适当的libspotify清理的情况下退出流程,脱机登录将无法工作。

您的iKenndac绝对正确! 事实上,问题出在键盘后面,因为我被连接状态和登录回调的sp_错误弄糊涂了

事实上,我成功登录的方式与连接时相同。即用户名和密码以及“记住我”。

api.h中的注释引起了混乱

SP\u连接\u状态\u已注销\u=0,//<用户尚未登录

SP\u连接\u状态\u登录\u=1,//<针对Spotify接入点登录

SP_CONNECTION_STATE_DISCONNECTED=2,//<已登录,但现在已断开

SP\连接\状态\未定义=3,//<连接状态未定义

SP_连接_状态_脱机=4//<以脱机模式登录

当我在没有internet连接的情况下启动我的应用程序时,我首先收到一个登录回调,说SP_ERROR_OK,然后我收到SP_connection_STATE_DISCONNECTED(已登录,但现在已断开)

未连接到internet时,我希望SP_连接_状态_脱机(以脱机模式登录)


但是“正在工作”

我不知道spotify是如何工作的,但我知道如果没有互联网连接,你将永远无法登录任何在线服务。如果脱机曲目未存储在本地计算机上,您将无法访问它们。我相信我正在这样做。我有一个注销回调,我有一个缓存。我想这意味着在玩blob的时候是值得的。你不知道我是否必须省略用户和/或密码,如果省略,我是否应该传递零指针或无效字符串?你必须提供一个带有blob的用户名,并将NULL传递给其余的用户。