PHP-GitHub-Api身份验证问题怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (90)

我试图使用PHP-GitHub-API库。到目前为止,我已经将用户发送到Github,以允许我的应用程序访问,并成功地获得了一个令牌。我不知道现在该怎么办。这是我的代码。

我将用户发送到Github的URL。

https://github.com/login/oauth/authorize?scope=repo,user&client_id=<client_id>

然后使用php-GitHub-API。$Token变量是在 $_GET中发送的代码,当用户被重定向到回调时获取数组。

        $client = new \Github\Client();
        try {
            $auth = $client->authenticate($token, Github\Client::AUTH_HTTP_TOKEN);
        } catch (Exception $e) {
            dp($e);
        }

有人知道这是否是验证用户身份的正确方法吗?当我试图调用一个方法时,需要一个授权的用户,我会得到一个401状态代码和一个错误作为回报。

提问于
用户回答回答于

获取访问权限的cURL请求得到access_token。然后,将令牌添加到回调中的身份验证方法中。

        $token  = $_POST['token'];
        $params = [
            'client_id'     => self::$_clientID,
            'client_secret' => self::$_clientSecret,
            'redirect_uri'  => 'url goes here',
            'code'          => $token,
        ];

    try {
        $ch = curl_init('https://github.com/login/oauth/access_token');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
        $headers[] = 'Accept: application/json';

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
    } catch (\Exception $e) {
        dp($e->getMessage());
    }

然后,在回调中,我们可以将身份验证方法调用到某个地方并缓存它,目前我正在会话中这样做。

$client = self::getClient();
    $_SESSION['access_token'] = $response->access_token;

    try {
        $client->authenticate($response->access_token, Github\Client::AUTH_HTTP_TOKEN);
    } catch (\Exception $e) {
        dp($e->getMessage());
    }
用户回答回答于

扫码关注云+社区

领取腾讯云代金券