Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Soundcloud作为Oauth提供商:如何使其只连接一次_Oauth_Soundcloud_Single Sign On - Fatal编程技术网

Soundcloud作为Oauth提供商:如何使其只连接一次

Soundcloud作为Oauth提供商:如何使其只连接一次,oauth,soundcloud,single-sign-on,Oauth,Soundcloud,Single Sign On,我目前正在实现一个Oauth消费者服务,它也将使用Soundcloud作为Oauth服务提供商。但我有以下问题:以Facebook或Twitter为例,你去那里,登录,填写权限表,然后重定向回你的应用程序。如果你第二次去那里,并且假设你已经登录了,你基本上跳过了所有步骤,并立即被重定向回来。这意味着,Facebook认识到您已经对该第三方服务授予了许可,因此它不会不断请求您的许可 这就是我使用Soundcloud时发生的事情。基本上,每次我将用户重定向到Soundcloud Oauth conn

我目前正在实现一个Oauth消费者服务,它也将使用Soundcloud作为Oauth服务提供商。但我有以下问题:以Facebook或Twitter为例,你去那里,登录,填写权限表,然后重定向回你的应用程序。如果你第二次去那里,并且假设你已经登录了,你基本上跳过了所有步骤,并立即被重定向回来。这意味着,Facebook认识到您已经对该第三方服务授予了许可,因此它不会不断请求您的许可

这就是我使用Soundcloud时发生的事情。基本上,每次我将用户重定向到Soundcloud Oauth connect端点时,都会显示权限表单,尽管我之前已经向该第三方服务授予了权限。我每次都被迫按“连接”,这是从用户角度看的一个拖动(您可以给同一实体多少次权限)。我的问题是:是否有一个参数可用于使soundcloud识别/验证用户帐户对该特定第三方服务的先前权限?或者这是Soundcloud Oauth设计实现,我们不得不接受它

编辑:

也许这还不清楚,但每次我在soundcloud中按“connect”时,都会生成并交付一个新的访问令牌。因为我的应用程序使用这个访问令牌来识别它的用户,所以每次我想登录时,访问令牌都会被更新,这对我来说不是很好,使我每次都能有效地“注册”。总而言之,我想将之前的属性令牌获取到我的帐户,这样我就可以在我的数据库中查找、识别它并让他登录


我也在寻找一种解决方案,它不涉及在客户机中存储可能被清除的状态

您可以将用户的oauth令牌存储在本地存储中,并在将来的会话中重用它。这就是soundcloud.com上发生的事情

更详细的解释是:

当您使用连接流时,SoundCloud会对用户进行身份验证(通过使用用户名/密码、Facebook Connect或SoundCloud.com上已经存在的会话),然后在成功后,您的应用程序会获得该用户的oauth令牌。这将传递到为您的应用程序注册的回调页面

该令牌是让用户“登录”所需的唯一信息。除非令牌过期(通过时间或用户手动撤销),否则您可以在将来的会话中重用该令牌


我想我对应用程序的设计有点困惑:oauth令牌在哪里使用,如何使用?我认为,与其使用令牌作为标识符,也许用户的永久链接会更好?如果您有oauth令牌,您可以通过本地存储查询
api.soundcloud.com/me

找到永久链接,您是指客户端的html5本地存储吗?我不确定soundcloud中是否会发生这种情况,因为他们没有使用oauth工作流,只是简单地使用电子邮件和密码为注册用户签名……不,它使用的oauth流程与任何其他应用程序相同——我碰巧知道一两件事,因为我写了这部分;)哼。。。我不确定我们是否在谈论同一件事。当我进入soundcloud时,我要么使用用户和密码登录,要么使用facebook帐户登录。无论哪种方式,Soundcloud都可以通过我的电子邮件或facebook返回的访问令牌(已经存储)来识别我。现在,我不通过电子邮件识别用户。soundcloud帐户标识用户(访问令牌)。现在,每次我将用户重定向到soundcloud时,我都会授予权限并创建一个新的访问令牌。这对于识别已经在我的平台上生成了内容的人来说很糟糕。现在,这正是我的观点,在服务器端为已经存在的用户创建一个有效的会话,而不用求助于javascript黑客。我想去soundcloud,连接到第三方应用程序一次,并获得一个令牌,每次我回到soundcloud,他们都会给我这个访问令牌(只要它还没有过期,这意味着我必须续订)。这是“获取相同的访问令牌”的一部分,我没有得到,也希望得到。对问题进行了一个小的编辑,以防您对此有任何意见。可能重复