/**
*由于在应用申请中,我设置的域名属于新浪云,因此在本地测试的话肯定不能成功的,有个办法就是直接在新浪云那边授权成功后,将token的值直接使用post或者get方法传递过来,直接在本地
*localhost进行接收,这样本地的拿到之后可以直接拿着token去访问用户的资料。但是,这种做法肯定是有一定的危险性,只是在本地测试的时候这样干,上传到新浪云的话就没有必要这样做的.
*/
header('Content-Type: text/html; charset=UTF-8'); require_once("config.php");
require_once('saetv2.ex.class.php');
require_once('../sendEmail/mysqlInfo/sqlInfo.php'); $type="SINA"; //通过_GET方法拿到我们localhost访问本文件所需要的token
$token=$_GET['token'];
//经过测试,这样我们可以正常拿到我们所需要的token值。
//debug($token);
/**
*$c = new SaeTClientV2(WB_AKEY,WB_SKEY,$token);创建一个操作类,并传入token,通过get_uid()方法获取到当前用户的uid值,再通过掉用它的show_user_by_id($uid)方法来获取当前用户的基本资料。
*/ $c = new SaeTClientV2(WB_AKEY,WB_SKEY,$token);
$uid=$c->get_uid()['uid']; //经过测试并能够成功获取到用户的基本资料。
//debug($c->show_user_by_id($uid));
/**
*在一般应用程序开发中,只使用sdk中的用户的基本信息,以及sdk中的信息分享那块。
*在本次的游戏设置中,我只打算使用uid、新浪用户名、text以及图片文件或者网页文件的分享。
*因此,在使用数据库注册的时候,值使用用户基本信息表中的uid项。
*/ //连接到数据库
$con=@mysql_connect(DB_USER,DB_ROOT,DB_PWD)or die('信息错误');
//选择数据表
mysql_select_db(DB_NAME,$con)or die('信息错误');
mysql_query('SET NAMES UTF8') or die('信息错误'); //首先查询是否当前用户已经在数据表中进行注册,如果没有注册的话就进行uid注册,否则的话就直接去登录。
$sql ="SELECT * FROM user_information WHERE third_uid='{$uid}'"; $result = mysql_query($sql,$con);
$source=mysql_fetch_array($result);
if($source){
//登录
}else{
//数据库写入成功
$information=$c->show_user_by_id($uid); $name=$information['name']; //获取新浪用户名
$photo=$information['profile_image_url']; //获取新浪头像
$sex=$information['gender']; //获取用户性别 $query="INSERT INTO user_information (user_name,user_sex,user_photo,third_uid,third_type) VALUES ('$name','$sex','$photo','$uid','$type')";
$row=@mysql_query($query) or die('信息错误');
}
mysql_close(); ?> <!--关于Javascript与AIR通信:由于php在AIR端使用的是HtmlLoader类进行加载页面的,因此,使用php与AS3.0暂且无法通信,只能使用javascript进行通信。那么,在通信过程中遇到的几个问题: 1.AIR通信不能再使用ExternalInterface类进行as与js通信。Error: Error #2067: The ExternalInterface is not available in this container. ExternalInterface requires Internet Explorer ActiveX, Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime.
2.在使用AIR中的HtmlLoader.window对象和Javascript通信时,注意的地方就是:
(1).AS3.0 :this.htmlloader.window.functionName = functionName; private function functionName(msg:Stirng):void{//方法在定义过程中可以有javascript传递的参数类型定义或者可以没有,但是必须要保持和javascript端方法接口一致。}
(2).JS : 按道理来说我直接可以使用html中的body标签的onload属性直接去调用javascript中定义的方法,然后再使用这个js方法去调用AS3.0中的方法,但是我测试失败了,这个好郁闷哦。因此我使用的是button中的onClick属性去触发js方法然后去调用AS3.0的方法。并直接传递参数。
(3).application域问题:根据api解释应该是:当我们加载的html文件来自和我们使用的包含HtmlLoader类的swf文件的程序域不同的情况下,则程序默认本页面的程序域为本程序的程序域。那么我们还是最好加上htmlloader.runtimeApplicationDomain = ApplicationDomain.currentDomain;
--> <!doctype html> <html>
<head>
<title></title>
<script type="text/javascript">
var msg=<?php echo $uid;?>;
function confirmToLogin(){
getString(msg);
}
</script>
</head>
<body> <input type="button" value="返回到程序" onClick="confirmToLogin()"/>
</body>
</html>

as3.0测试端:

package
{ import flash.display.MovieClip;
import flash.html.HTMLLoader;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.net.URLLoaderDataFormat; public class AirtoJS extends MovieClip
{
private var l:HTMLLoader=new HTMLLoader();
private var uid:String="";
private var r:URLRequest = new URLRequest("http://localhost:8081/feiruo/chinesechessgame/php/sinalogin/index.php"); public function AirtoJS()
{
l.runtimeApplicationDomain = ApplicationDomain.currentDomain;
l.load(r);
l.width = stage.stageWidth;
l.height = stage.stageHeight;
this.addChild(l);
l.addEventListener(Event.COMPLETE,loaded);
}
private function loaded(e:Event):void
{
this.l.window.getString = getString;
}
private function getString(msg:String):void
{
this.uid=msg;
this.removeChild(this.l);
this.l=null;
this.r=null;
loginBySina();
}
private function loginBySina():void{
var _r:URLLoader=new URLLoader();
var _v:URLVariables=new URLVariables();
var _u:URLRequest=new URLRequest("http://localhost:8081/feiruo/chinesechessgame/php/sinalogin/sina.php");
_v.uid=this.uid;
_u.method=URLRequestMethod.POST;
_r.dataFormat = URLLoaderDataFormat.VARIABLES;
_u.data=_v;
_r.load(_u);
_r.addEventListener(Event.COMPLETE,loadedHd);
}
private function loadedHd(e:Event):void{
trace("feiruo");
trace(e.target.data);
}
} }

关于AIR新浪登录测试的更多相关文章

  1. Java 模拟新浪登录 2016

    想学习一下网络爬虫.涉及到模拟登录,查阅了一番资料以后发现大部分都有点过时了,就使用前辈们给的经验,Firefox抓包调试,採用httpclient模拟了一下新浪登录. 不正确之处多多包括.须要的能够 ...

  2. 将php代码部署到新浪云测试(简单方法,包含数据库的连接)

    很多人做项目都是先在本地测试然后上传到服务器运行,如果包含了操作数据库的信息往往需要进行一番调试,这里我总结一下把php代码包含数据库的连接如何上传到新浪云服务器的步骤. 1.在新浪云应用SAE的控制 ...

  3. QQ 微信 新浪 无法 分享 收集

    1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...

  4. Python如何调用新浪api接口的问题

    前言:这些天在研究如何调用新浪开放平台的api分析新浪微博用户的数据 成果:成功调用了新浪api获取了用户的一些个人信息和无数条公共微博 不足:新浪开放平台访问有限制,返回的数据着实有限,不足以分析问 ...

  5. VC POST表单——登录验证新浪邮箱

    1.本机环境: Windows XP SP3.ADSL 2.开发工具: WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1 ...

  6. 微信qq,新浪等第三方授权登录的理解

    偶们常说的第三方是指的微信,qq,新浪这些第三方,因为现在基本每个人都有qq或者微信,那么我们就可以通过这些第三方进行登录.而这些网站比如慕课网是通过第三方获取用户的基本信息 它会有个勾选按钮,提示是 ...

  7. 【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)

    一.微信联合登录是怎么登录的,有几种登录方式:微信联合登录和微信授权登录[授权登录(非静默授权)与静默授权] [主动授权]:需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关 ...

  8. tp5集成淘宝,微信,网易,新浪等第三方登录

    tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ...

  9. 调用新浪短地址转换api的一个测试

    import base64 import requests url="http://www.~~~~.com" headers={ "User-Agent":& ...

随机推荐

  1. 读书笔记:Sheldon Ross:概率论基础教程:随机变量

    例1b 一个坛子里装有编号1-20的球,无放回抽取3个,取出球中至少一个号码大于等于17的概率是多少? 除了书上的解法外,还有一种解法: 考虑相反的情况:三个球的号码都小于17. 第一次从编号1-16 ...

  2. Maven 和 Ant 的区别?

    Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面.Ant 为 Java 技术开发项目提供跨平台构建任务.Maven 本身描述 ...

  3. String、StringBuffer、StringBuilder之间的区别

    String                      字符串常量 StringBuffer         字符串变量(线程安全) StringBuilder       字符串变量(非线程安全) ...

  4. C#学习笔记五: C#3.0Lambda表达式及Linq解析

    最早使用到Lambda表达式是因为一个需求:如果一个数组是:int[] s = new int[]{1,3,5,9,14,16,22};例如只想要这个数组中小于15的元素然后重新组装成一个数组或者直接 ...

  5. cheat engine lua

    function CEButton1Click(sender) local x = getProperty(CETrainer.CEEdit1,"Text")--这句很重要,获取文 ...

  6. IO - FileUtils

    Apache Commons IO好用的功能主要集中在工具类FileUtil中,包含了建立,删除,复制,移动,比较文件新旧,递归枚举目录清空目录,一次读取整个文件等.以下是一个我认为有用的列表: 1. ...

  7. Android 区别普通Touch方法和Scroll

    今天想实现这个功能,但只是利用现有的onTouchEvent和GestureDetector感觉做起来有些纠结,原来好像也尝试过,最后搞的程序有点乱,不好维护,那么就利用一下Android程序员最大的 ...

  8. html_

    =============  博客大全: 脚本之家:http://www.jb51.net/list/list_233_104.htm 红黑联盟: http://www.2cto.com/kf/yid ...

  9. MongoDB基本命令的使用

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示 ...

  10. 控制WIFI状态

    1.控制WIFI public class MainActivity extends Activity { private Button startButton = null; private But ...