所以在我开始之前,我是一个OAuth2新手,所以仍然试图真正地围绕各种许可范围和补助.
我已成功使用Laravel OAuth2 Server软件包成功实施OAuth2服务器.
我正在处理的当前站点将使用client_credentials授权类型从API中简单地进行dogfood.我已经设法成功地工作,并可以使用提供的访问令牌进行API调用.
但是,我想知道如何实现类似于Instagram,Soundcloud等的架构,它们不需要基本端点的access_token,只需要client_id.他们如何做到这一点?这是自定义授权类型吗?
最好,我只想在访问私有资源时开始要求访问令牌,例如修改用户信息等.据我所知,对于这些我需要使用密码授权类型,不是问题.
解决方法:
OAuth有一些流程,如2-legged或3-legged,它基本上告诉开发人员需要向服务器发出多少请求才能获得他想要的资源.
例如,在一个两条腿的流程中,您发送一个带有您的ID和密码的请求(第一个请求),您返回一个access_token并使用该令牌,您可以对您想要的资源(第二个请求)提出其他请求.
回到你的Instagram示例,你可以考虑只使用client_id作为单脚OAuth流,因为你只向服务器发出一个请求以获得你想要的资源.
您可以将此类流用于不太敏感的资源,例如个人资料照片或用户的昵称.
单脚流程的实现很简单:
– 如果user_id有效且应用程序不需要用户批准来访问所请求的资源,请继续并显示资源.
因此,实现单脚流程包括检查client_id是否有效并检查所请求的资源是否需要用户权限.话虽这么说,您可以使用1-legged来请求用户个人资料照片,但您不能使用相同的流程来请求用户的私人消息.
您可以在The OAuth Bible中详细了解每个OAuth流程.
标签:php,oauth-2-0,api
来源: https://codeday.me/bug/20190728/1565158.html