2013-08-02 86 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

祝你好運!