3

我正在尝试使用 KnpLabs的 php-github-api在我的应用程序(使用 Laravel 4 构建)中实现 Github 身份验证。我继续在我的 Github 帐户中创建了一个应用程序来获取 client_id 和密钥。

问题是,我无法使用这个库进行身份验证。返回空结果。它的实现看起来很简单,但我无法让它工作。看看我是如何实现它的。

try{
        $client = new Github\Client();

        $auth= $client->authenticate('myclientid','mysecret',AUTH_URL_CLIENT_ID);

        $emails = $client->api('current_user')->emails()->all();

        return Response::json(array("user"=>$emails));
    }catch(Exception $e){
        return Response::json(array('failed',$e->getMessage()));
    }

这是我从上面得到的结果:

 ["failed","Requires authentication"]

请有人帮我弄清楚我做错了什么。

谢谢你。

4

3 回答 3

1

我相信 AUTH_URL_CLIENT_ID 应该是 Github\Client::AUTH_URL_CLIENT_ID

于 2013-10-14T18:52:23.407 回答
0

这更像是一个 Github 问题,而不是一个 php-github-api 问题,真的:

curl "https://api.github.com/user/emails?client_id=xxxx&client_secret=yyyy"

也会失败,而:

curl "https://api.github.com/user/emails" -u mbontemps

工作得很好。

我认为原因是 client_id 和 client_secret 对应用程序进行身份验证,而第二个命令对用户进行身份验证。

这就像你在问:“嘿,应用程序,告诉我你的电子邮件”
该应用程序正在回答:“等等,什么?我不是用户,伙计!”

因此,IMO 您需要为您的用户授权应用程序(这将为您提供一个令牌),然后使用此令牌通过 OAuth 机制进行身份验证。

参看。http://developer.github.com/v3/#basic-authentication

祝你好运!

于 2013-12-18T16:09:33.823 回答
0

更新,Github\Client::AUTH_URL_CLIENT_ID不再使用。请参见:

https://github.com/KnpLabs/php-github-api/blob/v3.3.0/doc/security.md

支持的方法有:

  • Github\Client::AUTH_CLIENT_ID
  • Github\Client::AUTH_ACCESS_TOKEN
  • Github\Client::AUTH_JWT

在这种情况下$client->authenticate('myclientid','mysecret',AUTH_URL_CLIENT_ID)应该是:

$client->authenticate('myclientid', 'mysecret', Github\Client::AUTH_CLIENT_ID)

如果使用身份验证令牌,我们可以省略 mysecret/password 部分:

$client->authenticate('myauthtoken', Github\Client::AUTH_ACCESS_TOKEN);
于 2021-07-08T01:23:08.800 回答