2013-08-02 57 views
3

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

问题是,我无法使用此库进行身份验证。返回空结果。它的实现似乎很简单,但我无法得到它的工作。结帐我如何实施它。

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"] 

请人帮我找出我在做什么错。

谢谢。

+0

这是一个无耻的插件,但它可以帮助您了解客户端使用Runscope来回发送的内容。创建一个免费帐户,记下您的存储桶密钥,然后在创建客户端后添加以下行:'$ client.setOption(“base_url”,“api-github-com-yourbucketkey.runscope.net”);'。然后再次发出请求并在您的Runscope帐户中查看。然后,您可以看到生成的实际HTTP请求/响应以及Github返回的错误。 –

回答

1

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

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认证的应用

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

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

cf. http://developer.github.com/v3/#basic-authentication

祝你好运!