使用 PayPal API 登录:获取基本用户信息

Sign in with Paypal API: get basic user info

本文关键字:用户 信息 获取 PayPal API 登录 使用      更新时间:2023-09-26

我正在使用JavaScript登录PayPal。

我的JavaScript代码如下,似乎工作正常。

<script type="text/javascript" src="https://www.paypalobjects.com/js/external/api.js"></script>
<script type="text/javascript">
paypal.use( ["login"], function(login) {
  login.render ({
    "appid": "<%=paypalAppId%>",
    "scopes": "profile email address phone https://uri.paypal.com/services/paypalattributes",
    "containerid": "paypalLogin",
    "locale": "en-gb",
    "returnurl": "http://www.domain.net/plogin.html"
  });
});
</script>  

但是,我正在努力下一步。使用 JavaScript 或经典 ASP,我尝试获取有关登录用户的以下数据:

  • 电子邮件地址
  • 名字
  • 唯一 ID(可选)
  • 地址(可选)
  • 电话号码

我已经在Facebook,Google和LinkedIn上做到了这一点,使用各自网站上提供的示例。但是,对于PayPal,我找不到任何有关如何执行此操作的有用示例......

我设法通过下一个代码实现了这一点。它从来没有像PayPal那样对我有用。所以我在一个代码上做所有事情,而不是跳转。testingPaypalIdentity.php 是我作为"返回 url"放置的 url 回调,与您必须放在 PayPal 应用程序上的回调相同。

基本上,代码检查是否有用户权限的代码,如果有,则创建令牌,如果有刷新令牌,则搜索用户信息并打印。

require __DIR__ . '/bootstrap.php';
use PayPal'Api'OpenIdSession;
use PayPal'Api'OpenIdTokeninfo;
use PayPal'Exception'PayPalConnectionException;
use PayPal'Api'OpenIdUserinfo;
$baseUrl = getBaseUrl() . '/testingPaypalIdentity.php?success=true';
$tmp;
//Get Authorization URL returns the redirect URL that could be used to get             user's consent
$redirectUrl = OpenIdSession::getAuthorizationUrl(
$baseUrl,
array('openid', 'profile', 'address', 'email', 'phone',
    'https://uri.paypal.com/services/paypalattributes',
    'https://uri.paypal.com/services/expresscheckout',
    'https://uri.paypal.com/services/invoicing'),
    null,
    null,
    null,
    $apiContext
);
$refreshToken='';
if (isset($_GET['code']) && $_GET['code'] != '') {
    $code = $_GET['code'];
    try {
        $accessToken = OpenIdTokeninfo::createFromAuthorizationCode(array('code' => $code), null, null, $apiContext);
    } catch (PayPalConnectionException $ex) {
        echo $_GET['code']." ".$ex;
        //ResultPrinter::printError("Obtained Access Token", "Access Token", null, $_GET['code'], $ex);
        exit(1);
    }
    $refreshToken=$accessToken->getRefreshToken();
    print_r($accessToken);
    //ResultPrinter::printResult("Obtained Access Token", "Access Token",     $accessToken->getAccessToken(), $_GET['code'], $accessToken);
}
if($refreshToken!='') {
    try {
        $tokenInfo = new OpenIdTokeninfo();
        $tokenInfo = $tokenInfo->createFromRefreshToken(array('refresh_token' => $refreshToken), $apiContext);
        $params = array('access_token' => $tokenInfo->getAccessToken());
        $userInfo = OpenIdUserinfo::getUserinfo($params, $apiContext);
    } catch (Exception $ex) {
        // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY
        echo $ex;
        exit(1);
    }
    $tmp=$userInfo;
    print_r($userInfo);
}

并检查 OpenIdUserinfo 类以获取所需的信息,例如:

$email = $userInfo.getEmail();

很抱歉英语不好,如果您需要更多信息,请询问。问候