我安装了Google Opauth策略,它的工作非常出色。 LinkedIn的行为略有不同;在此策略的指示中,它指定不需要OAuth重定向URL(在LinkedIn开发人员网站上)。我试着把它留下来,并不断收到这个错误:
'无效的redirect_uri。该值必须与使用API密钥注册的URL匹配。'
这个错误也出现在插件的演示中:http://opauth.org/#demo
所以我稍微改了一下并放置了我的重定向网址,以防万一,就像我的谷歌一样,它似乎有效!它把我带到了LinkedIn登录界面,我输入了我的凭据,然后将我重定向回我的应用程序。麻烦的是,这次没有返回任何数据。
LinkedInStrategy.php中的默认值如下所示:
public $defaults = array(
'redirect_uri' => 'http://example.com/users/login',
'response_type' => 'code',
'scope' => 'r_fullprofile r_emailaddress r_contactinfo'
);
在我的控制器中我有这个:
$_SESSION['log'] = $this->data;
在我看来,我有这个:
debug($_SESSION['log']);
这只是为了查看数据是否正在设置。当我使用GoogleStrategy.php设置登录时,此行显示所有数据,我用它来登录。完美。但是使用LinkedIn策略,我只是得到一个空阵列。有人有什么想法吗?
编辑:
根据LinkedIn API文档here,我返回的代码是成功验证后返回的正确代码(在响应URL中重定向uri,代码和状态)。所以我知道到目前为止连接的一切都是正确的,只是获取数据必须与常规Opauth文档中规定的$ this->数据返回方法不同。
答案 0 :(得分:0)
我解决了!我将redirect_uri更改回默认值:
'redirect_uri' => '{complete_url_to_strategy}oauth2callback',
在LinkedIn Developer API区域,我将此网址放在OAuth 2.0重定向网址中:
http://example.com/auth/linkedin/oauth2callback
因此,与其说明here不同,需要设置OAuth重定向网址。
2. Create LinkedIn application at https://www.linkedin.com/secure/developer
Enter your domain at JavaScript API Domain
There is no need to enter OAuth Redirect URL
此外,它必须是http://www.example.com/auth/linkedin/oauth2callback。如果它不是那个URL,它将无法工作,除非你自己更改一些配置文件和函数名称。我的错误是我为它设置了一个自定义页面,而不是通过它的oath2callback函数然后前往重定向页面。