2011-03-28 81 views

回答

8

我想你是在谈论curl命令行,而不是图书馆。我没有尝试,但根据我所知道的OpenID和curl,它应该是可能的。但是,不完全自动化。如果你想成为真正的平静和通用的,你将不得不“解析”身份提供者和内容提供者登录页面的内容。如果你知道你要去哪里,不介意情侣您的服务和客户端(无HATEOAS),你可以先与身份提供商进行认证,如:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar cookies \ 
     --data login=$mylogin \ 
     --data passwd=$mypasswd \ 
     https://identprovider.example.com/login 

,然后张贴您的OpenID的内容提供者:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar cookies \ 
       --data openid="$myopenidurl" \ 
       http://contentprovider.example.com/login 

这假设内容提供者已经被授权使用身份提供者。 然后让你的内容:

curl -iSsL --user-agent 'Mozilla/5.0' --cookie cookies --cookie-jar cookies \ 
       http://contentprovider.example.com/interesting/content 

请注意,这种做法并不宁静,因为我硬编码在代码中的POST URI和领域。要分离客户端和服务器,必须从响应中提取uris和字段名称。在bash脚本中,例如,可以使用sed

我认为应该可以工作,但如果没有,那么你必须真正遵循重定向并提取URI和表单,因为一些参数可以在重定向URI或隐藏表单域中传递。