【发布时间】:2014-10-21 23:29:43
【问题描述】:
我正在使用 artdarek-oauth-4-laravel 通过 Facebook、twitter 和 google 登录我的网站。
登录部分工作正常。但我想从这些 api 中获取更多数据,比如如果用户通过 google 注册,那么我正在寻找他们的一般信息以及 google 联系人列表,或者如果用户正在从 Facebook 注册,那么我正在尝试获取/me 和 /friend-list 等。
在这里,我只是以谷歌为例。
我已经这样设置了配置
'Google' => array(
'client_id' => '***********************************',
'client_secret' => '***********************************',
'scope' => array('userinfo_email', 'userinfo_profile', 'https://www.google.com/m8/feeds/'),
),
我的控制器功能是这样的:-
public function loginWithGoogle()
{
$code = Input::get( 'code' );
$googleService = OAuth::consumer( 'Google' );
if ( !empty( $code ) )
{
$token = $googleService->requestAccessToken( $code );
// $result = json_decode( $googleService->request( 'https://www.googleapis.com/oauth2/v1/userinfo' ), true );
$result = json_decode( $googleService->request( 'https://www.google.com/m8/feeds/contacts/default/full' ), true );
echo json_encode($result);
}
else {
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return Redirect::to( (string)$url );
}
}
此代码将我引导至 google api,并要求我在服务范围内设置的所有权限。在这里,一旦我在与 api 交换代码参数后获得了访问令牌,我正在调用 url 以返回我的联系人列表,但它失败了。我从 laravel 收到这条消息:-请求资源失败。
如果我调用注释的 $result 请求,它会返回结果。
所以,我想知道我们如何将这个库用于登录和注册以外的数据。在检索 facebook 好友列表的情况下,会发生同样的事情,但登录有效。 (我的Facebook App有权限获取好友列表)。
感谢任何帮助。
【问题讨论】:
-
你有什么解决办法吗?对我来说 $result 实际上是 NULL。
-
是的,问题出在我在谷歌上创建的 APP 的权限上。一旦我为应用程序分配了“联系人 API”权限(在 Google API 上从这里 console.developers.google.com),它就开始给我联系人列表。
标签: php laravel-4 oauth oauth-2.0