当前时间:Sunday 2017年12月17日 欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

当前位置: 首页 >> 系统研究 >> 正文

msn 连接登陆

PHP 代码示例

本节说明了如何通过使用 PHP 脚本调用信使连接授权 web 服务和其它 API 一个代码示例 (设计和测试的 PHP 版本 5.3.6.0)。此代码示例包含以下脚本:

signin.php,它使用户能够登录到 Windows Live 并同意指定的作用域。callback.php、 钢条的 tokens_rest_api.php 脚本调用。tokens_rest_api.php,其中直接与信使连接授权 web 服务和其它 API 进行交互。tokens_mysql.php,并将访问和刷新标记存储在一个 MySQL 数据库检索。globals.php,它定义几个常量、 全局变量和日志记录功能,使用上面的脚本的。callback_mysql.php,可使用 signin.php 和 callback.php 脱机叫信使连接授权 web 服务和其它 API 的位置或无人值守。signin.php

此脚本使用户能够登录到 Windows Live 并同意指定的作用域。如果用户成功标志,并同意,此脚本尝试调用信使连接授权 web 服务以获得授权码。如果调用成功,信使连接授权 web 服务调用的 callback.php 脚本并将授权代码传递给它。

<?php include_once ‘globals.php’;echo <<<TOP <!DOCTYPE html PUBLIC ‘-//W3C//DTD XHTML 1.0 Transitional//EN’ ‘http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd’> <html xmlns=’http://www.w3.org/1999/xhtml’> <head> <title>Sign in</title> </head> <body> <a href=’TOP;/* Example authorization code URL: https://oauth.live.com/authorize?client_id=00000000603DB0FC &scope=wl.offline_access%20wl.basic&response_type=code &redirect_uri=http%3A%2F%2Fwww.contoso.com%2Fcallback.php*/ echo ENDPOINT_OAUTH . ENDPOINT_PATH_AUTHORIZE . PARAM_CLIENT_ID . APP_CLIENT_ID . PARAM_SCOPE . REQUESTED_SCOPES . PARAM_RESPONSE_TYPE . PARAM_RESPONSE_TYPE_CODE . PARAM_REDIRECT_URI . APP_REDIRECT_URI;echo <<<BOTTOM ‘>Sign in</a> </body></html>BOTTOM;?>

前面提到的脚本是非常简单的。它只是显示为用户单击超链接。在用户单击该超链接之后,会发生下列情况:

该脚本调用调用信使连接授权 web 服务 (https://oauth.live.com/authorize),在应用程序的客户端 ID,请求范围,请求授权码,如果成功,并应通过授权码,该脚本的 URL 传递到 web 服务的企图。如果用户您尚未登录到 Windows Live,Windows Live 提示登录的用户。如果用户成功登录,信使连接验证 web 服务检查看是否用户先前已同意到请求的范围。如果用户不同意以前,信使连接验证 web 服务将提示用户同意。如果用户同意,信使连接验证 web 服务调用 callback.php 脚本,并向它传递授权码。callback.php

此脚本调用 tokens_rest_api.php 脚本获得访问令牌,然后使用该标记信使连接其它 API 调用。

<?php include_once ‘globals.php’;include_once ‘tokens_rest_api.php’; include_once ‘tokens_mysql.php’;$DISABLE_SSL_CHECKING = true;$USE_MYSQL = true; if (isset($_GET[‘code’])) { if (!$tokens = getTokens(APP_CLIENT_ID, APP_REDIRECT_URI, APP_CLIENT_SECRET, null, $_GET[‘code’])) { logMessage(‘Error retrieving tokens. Code execution has stopped.’); die(); }} else { logMessage(‘Error retrieving authorization code, likely due to malformed or missing ‘ . ‘URL parameter \’code\’. Code execution has stopped.’); die();} $results = callRestApi($tokens[‘access_token’], REST_PATH_ME, REST_API_GET); if (!$results) { logMessage(‘Error calling REST API. Code execution has stopped.’); die(); }else { logMessage(‘REST API results:’); logMessage(var_dump($results)); if (array_key_exists(‘error’, $results)) { logMessage(‘Error calling REST API. Code execution has stopped.’); die(); } if ($USE_MYSQL) { if (array_key_exists(‘refresh_token’, $tokens)) { if (!setTokensInMySQL(APP_CLIENT_ID, $results[‘id’], REQUESTED_SCOPES, $tokens[‘access_token’], $tokens[‘refresh_token’])) { logMessage(‘Error setting access and refresh token in MySQL.’); } else { logMessage(‘Access and refresh token successfully set in MySQL.’); } } else { if (!setTokensInMySQL(APP_CLIENT_ID, $results[‘id’], REQUESTED_SCOPES, $tokens[‘access_token’])) { logMessage(‘Error setting access token in MySQL.’); } else { logMessage(‘Access token successfully set in MySQL.’); } } } } ?>

前面提到的脚本在发生下列情况:

此脚本将检查以确保授权码存在,如果是这样,在要使用的授权码来获取一个访问令牌 (和可选) 刷新令牌) 的 tokens_rest_api.php 脚本中调用 getTokens 函数。该脚本然后 tokens_rest_api.php 脚本中使用 callRestApi 函数来调用信使连接其它 API,并显示此调用的结果。如果调用成功,并且如果全局变量 $USE_MYSQL 设置为true,该脚本调用以尝试在 MySQL 服务器中存储的访问令牌 (和可选) 刷新令牌) tokens_mysql.php 脚本。

 

CSDN文档: 

http://subject.csdn.net/msnconn/

 

 

官方技术文档:

http://www.microsofttranslator.com/bv.aspx?from=en&to=zh-CHS&a=http%3A%2F%2Fgo.microsoft.com%2Ffwlink%2F%3FLinkId%3D220013

作者:夜阑小雨
原文链接:msn 连接登陆
夜阑小雨版权所有,转载本网站文章时请保留此信息。

收藏和分享: 转贴到开心网 转贴到校内网 分享到 Twitter Delicious 分享到 Google Reader 分享到 百度收藏 分享到 QQ收藏

所在分类:系统研究

评论信息

0 条评论 发表评论

发布评论

您必须登录才能发表评论。

网站客户端下载