Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Php 使用oAuth或其他工具实现访问_Php_Api_Authentication_Openid_Oauth - Fatal编程技术网

Php 使用oAuth或其他工具实现访问

Php 使用oAuth或其他工具实现访问,php,api,authentication,openid,oauth,Php,Api,Authentication,Openid,Oauth,我正试图想出一种方法,向其他第三方网站打开一个网站及其部分数据库,类似于Twitter如何让webapps连接到其数据库以检索数据并可能存储数据 我最初的研究让我想到了oAuth(或者它是openID?) 我需要做的是让第三方网站登录到网站上的用户帐户,但只读取和写入属于他们的数据,而不能接触属于其他第三方网站的数据 我对oAuth的细节有点模糊。我是否需要创建某种API,或者oAuth是我唯一需要实现的东西?正如你所看到的,我不知道如何做到这一点,所以那些更为专家的任何解释都会有所帮助 如果我

我正试图想出一种方法,向其他第三方网站打开一个网站及其部分数据库,类似于Twitter如何让webapps连接到其数据库以检索数据并可能存储数据

我最初的研究让我想到了oAuth(或者它是openID?)

我需要做的是让第三方网站登录到网站上的用户帐户,但只读取和写入属于他们的数据,而不能接触属于其他第三方网站的数据

我对oAuth的细节有点模糊。我是否需要创建某种API,或者oAuth是我唯一需要实现的东西?正如你所看到的,我不知道如何做到这一点,所以那些更为专家的任何解释都会有所帮助

如果我实现oAuth,其他第三方网站是否能够访问该网站的数据

我是否可以让其他第三方网站在用户不必访问主网站的情况下将用户注册到主网站?有人认为这是个坏主意吗?是/否,为什么

oAuth如何帮助我确保第三方网站不会读取/写入/更改与另一个第三方网站相关的用户数据


我相信这比我想象的要容易,但我对oAuth还不熟悉,所以情况还不清楚。

首先,让我们明确一下,oAuth和OpenID是两个独立的东西。OpenID仅用于身份验证。OAuth用于身份验证和授权。在这种情况下,授权是指客户机应用程序被授权访问和更新与经过身份验证的用户相关联的数据

我需要做的是让第三方网站登录到网站上的用户帐户,但只读取和写入属于他们的数据,而不能接触属于其他第三方网站的数据

如果存储在每个第三方网站上的数据与存储在身份验证服务器上的数据相互排斥,则您可能希望坚持使用OpenID

但是,如果您希望您的第三方网站更新应与所有其他第三方网站共享的用户信息(即姓名、姓氏、街道地址、信用卡信息等),则您可能希望使用OAuth。我知道OpenID规范有一个扩展,它允许这样做(事实上,您可以根据自己的实现进行调整),但一般来说,这种东西属于OAuth

我对这件事的细节有点模糊 非统组织。我需要创建一些排序吗 或者oAuth是我唯一需要的东西吗 需要实施什么

除了请求令牌和使用OAuth服务器授权客户机应用程序的初始细节之外,您还必须实现其他方法来检索和更新有关已验证用户的信息。例如,Twitter要求您的应用程序通过特定用户的身份验证,并有权更新用户的状态。除了基本OAuth实现之外,更新状态方法也是API的一部分

如果我实现了oAuth,其他第三个 党的网站能够访问数据 从网站上?有人认为 这是个坏主意?是/否,为什么

这些网站将只允许访问已通过OAuth服务器身份验证且授权该网站访问其数据的用户的数据。但是,只有那些具有有效使用者密钥的网站才能请求适当的令牌来开始OAuth会话。因此,只有您授权的网站才允许与您的服务器进行交互

这些代币总是有可能被劫持。但是这种担心不应该阻止您实现OAuth服务。这并不意味着不用担心。只是不要让这成为一个障碍

我是否可以让其他第三方网站在用户不必访问主网站的情况下将用户注册到主网站

不符合OAuth定义的当前规范。OAuth背后的想法是用户在OAuth服务器上注册。您的第三方客户端将此服务器用作身份验证点。但是,这并不意味着如果应用程序有某种“主”帐户可以登录,就不能实现某种API来注册用户(尽管这是它自己的安全风险)。只是不推荐

oAuth如何帮助我确保第三方网站不会读取/写入/更改与另一个第三方网站相关的用户数据

仅仅因为您使用OAuth并不意味着您的第三方网站不能在自己的数据存储中存储数据。Flickr和Twitter都提供OAuth服务,但都不在各自的服务器上存储对方的信息(Twitter的数据库中不会存储Flickr照片)

只要您没有在OAuth服务器上存储特定于每个应用程序的信息,就不会有问题。请记住,OAuth服务器用于对用户进行身份验证,并存储所有应用程序都应该共享的基本信息。我在此重申,如果您只想对用户进行身份验证,那么请坚持使用OpenID

编辑

我是否可以对权限进行分段,这样当用户授权站点A时,他不会将其授权给他的完整帐户,而只是授权其访问其帐户上自己的数据?oAuth可以这样做吗

在您的实现中,您可以。这将是一个检查与用于访问OAuth端点的访问令牌相关联的使用者密钥的问题。请记住,对API授权部分的每次调用都必须包含一个访问令牌。因此,如果您想将该端点锁定到特定的应用程序,可以通过访问令牌和使用者密钥进行检查。

很乐意提供帮助。:)将编辑我的回复