使用php以编程方式获取access_token


Get access_token programmatically with php

我有一个登录名和密码连接到一个平台。从浏览器登录后,我会得到一个access_token它存储在cookie(我猜)。如何获得访问令牌编程使用PHP(也许使用cURL) ?

我找到了一个解决方案,但它是用python写的,如何用PHP做同样的事情?

下面是使用python

的解决方案
import urllib
import urllib2
import cookielib
import json
import logging

class GISTokenGenerator:
    def __init__(self, email, password):
        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
        self.email = email
        self.login_data = urllib.urlencode({'user[email]': email, 'user[password]': password})
    def generate_token(self):
        logging.info('Generating a token for {0}...'.format(self.email))
        self.opener.open('https://site/users/sign_in', self.login_data)
        for cookie in self.cj:
            if cookie.name == 'aiesec_token':
                token_json = json.loads(urllib.unquote(cookie.value))
                token = token_json['token']['access_token']
        if token is None:
            raise Exception('Unable to generate a token for {0}!'.format(self.email))
        return token

PHP可以通过超全局变量$_COOKIE访问cookie。检索一个特定的cookie, echo $_COOKIE['name_of_cookie'];。要访问所有cookie,循环遍历它们

foreach ($_COOKIE as $cookie) {
    echo $cookie;
}

编辑

据我所知,一旦你收到这个cookie(可能叫做access_token),你想用这个cookie来卷曲一个页面。

这是一个关于如何用cookie获取URL的很好的资源。从本质上讲,

$c = curl_init('http://www.example.com/needs-cookies.php');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_COOKIE, 'access_token=' . $_COOKIE['access_token']);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($c);
curl_close($c);