<html>
<head>
<title>QQ登錄跳轉</title>
<script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
//切割字符串轉換參數表
function toParamMap(str){
var map = {};
var segs = str.split("&");
for(var i in segs){
var seg = segs[i];
var idx = seg.indexOf('=');
if(idx < 0){
continue;
}
var name = seg.substring(0, idx);
var value = seg.substring(idx+1);
map[name] = value;
}
return map;
}
//隱式獲取url響應內容(JSONP)
function openImplict(url){
var script = document.createElement('script');
script.src = url;
document.body.appendChild(script);
}
//獲得openid的回調
function callback(obj)
{
var openid = obj.openid;
$("#openid").text(openid);
//跳轉服務端登錄url
var resulturl = "@{openapi.QQs.login_result()}";
var accessToken = $("#accessToken").text();
//向服務端傳輸access_token及openid參數
document.location.href=resulturl + "?access_token=" + accessToken + "&openid=" + openid;
}
</script>
</head>
<body>
<!--<p>AccessToken:<span id="accessToken"></span>--ExpireIn<span id="expire"></span></p>-->
<!--<p>OpenID:<span id="openid"></span></p>-->
<!-- 執行腳本 -->
<script type="text/javascript">
//應用的APPID ***** 自己的app ID
var appID = "";
//登錄授權后的回調地址,設置為當前url ******自己的回調地址
// var redirectURI = "@@{openapi.QQs.login()}";
var redirectURI = "";
//初始構造請求
if (window.location.hash.length == 0)
{
var path = 'https://graph.qq.com/oauth2.0/authorize?';
var queryParams = ['client_id=' + appID,
'redirect_uri=' + redirectURI,
'scope=' + 'get_user_info,list_album,upload_pic,add_feeds,do_like','response_type=token'];
var query = queryParams.join('&');
var url = path + query;
window.location.href= url;
}
//在成功授權后回調時location.hash將帶有access_token信息,開始獲取openid
else
{
//獲取access token
var accessToken = window.location.hash.substring(1);
var map = toParamMap(accessToken);
//記錄accessToken
$("#accessToken").text(map.access_token);
$("#expire").text(map.expires_in);
//使用Access Token來獲取用戶的OpenID
var path = "https://graph.qq.com/oauth2.0/me?";
var queryParams = ['access_token='+map.access_token, 'callback=callback'];
var query = queryParams.join('&');
var url = path + query;
openImplict(url);
}
</script>
</body>
</html>