【问题标题】:Get access_token programmatically with php使用 php 以编程方式获取 access_token
【发布时间】:2015-11-17 07:48:09
【问题描述】:

我有一个登录名和密码来连接到一个平台。从浏览器登录后,我将获得一个 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

【问题讨论】:

  • 如果访问令牌存储在 cookie 中(您听起来不确定——是吗?您能检查一下吗?),为什么要使用 cURL 来访问 cookie?

标签: php python rest curl cookies


【解决方案1】:

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

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

编辑

据我了解,一旦您收到此 cookie(可能称为 access_token),您想使用此 cookie 卷曲一个页面。

This 是一个关于如何使用 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);

【讨论】:

  • 谢谢,现在如何访问存储在 cookie 中的令牌对我来说很有意义,但是登录它自己如何使用 PHP 像 self.opener.open('https://auth.aiesec.org/users/sign_in', self.login_data) 一样登录我有登录名和密码跨度>
  • 现在:我通过带有登录名和密码的 html 表单进行连接 => 我获得了一个存储在 cookie 中的访问令牌。我想要:使用 php 脚本(不是 Web 浏览器)登录(使用我的登录名并通过)并在 cookie 中获取存储的令牌
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2014-07-23
  • 1970-01-01
  • 2012-09-02
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多