关于AIR新浪登录测试
/**
*由于在应用申请中,我设置的域名属于新浪云,因此在本地测试的话肯定不能成功的,有个办法就是直接在新浪云那边授权成功后,将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新浪登录测试的更多相关文章
- Java 模拟新浪登录 2016
想学习一下网络爬虫.涉及到模拟登录,查阅了一番资料以后发现大部分都有点过时了,就使用前辈们给的经验,Firefox抓包调试,採用httpclient模拟了一下新浪登录. 不正确之处多多包括.须要的能够 ...
- 将php代码部署到新浪云测试(简单方法,包含数据库的连接)
很多人做项目都是先在本地测试然后上传到服务器运行,如果包含了操作数据库的信息往往需要进行一番调试,这里我总结一下把php代码包含数据库的连接如何上传到新浪云服务器的步骤. 1.在新浪云应用SAE的控制 ...
- QQ 微信 新浪 无法 分享 收集
1.网络请求报错.升级Xcode 7.0发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport Secur ...
- Python如何调用新浪api接口的问题
前言:这些天在研究如何调用新浪开放平台的api分析新浪微博用户的数据 成果:成功调用了新浪api获取了用户的一些个人信息和无数条公共微博 不足:新浪开放平台访问有限制,返回的数据着实有限,不足以分析问 ...
- VC POST表单——登录验证新浪邮箱
1.本机环境: Windows XP SP3.ADSL 2.开发工具: WildPackets OmniPeek V5.1.4 Visual C++ 6.0 IE6.0 FlexEdit V2.3.1 ...
- 微信qq,新浪等第三方授权登录的理解
偶们常说的第三方是指的微信,qq,新浪这些第三方,因为现在基本每个人都有qq或者微信,那么我们就可以通过这些第三方进行登录.而这些网站比如慕课网是通过第三方获取用户的基本信息 它会有个勾选按钮,提示是 ...
- 【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)
一.微信联合登录是怎么登录的,有几种登录方式:微信联合登录和微信授权登录[授权登录(非静默授权)与静默授权] [主动授权]:需要用户确认登录,这样可以通过用户的个人确认,获取用户全面的信息,无论是否关 ...
- tp5集成淘宝,微信,网易,新浪等第三方登录
tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ...
- 调用新浪短地址转换api的一个测试
import base64 import requests url="http://www.~~~~.com" headers={ "User-Agent":& ...
随机推荐
- Python基础教程【读书笔记】 - 2016/7/4
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第二波:第7章 更加抽象 [总览] 创建自己的对象,是Python的核心概念!Python被称为面向对象的语言.介绍如 ...
- 通信原理读书笔记:常规AM调制的功率
Proakis,通信系统原理,p101: 两个不同频率正弦和的功率为其功率的和. 计算功率时,和的平方展开后会出现两个正弦乘积项,按积化和差展开后在公共周期内积分为零.
- Python类,域,方法,对象,继承
类和对象: 是面向对象编程的两个主要方面,类创建一个新类型,而对象这个类的实例.. 域: 属于一个对象或类的变量被称为域.域有两种类型: 属于每个实例(类的对象)或属于类本身.它们分别被称为实例变量和 ...
- js 字符串转换为数值
原帖地址:http://www.cnblogs.com/jenney-qiu/archive/2012/02/27/2369848.html 使用parseInt()你可以从字符串中获取数值,该方法接 ...
- Eclipse无法进入Debug模式
转载自:http://blog.sina.com.cn/s/blog_4b3191950100v8h5.html 原因:多半是因为程序根本就没运行到断点处,所以重新检查自己设置的断点.
- 黄聪:wordpress伪静态的原理
首先起作用的是配置文件的.htaccess 中的 RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{RE ...
- Codeforces Round #356 (Div. 2)A. Bear and Five Cards(简单模拟)
A. Bear and Five Cards time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Java设计模式—生产者消费者模式(阻塞队列实现)
生产者消费者模式是并发.多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据.这篇文章我们来看看什么是生产者消费者模式,这个问 ...
- 寒假学习unity的第一天
1.在Assert中创建材质Material,可以为物体附上材质 2.实例化命令Instantiate(要生成的物体,生成的位置,生成物体的选择角度) 3.检测鼠标左键 if(Inhibitor.Ge ...
- Xcode5.0使用iOS6.1SDK及模拟器
最近项目中,介于测试人员提出的问题,有些情况只在ios6的设备上才能显现,而本机的xcode已升级到最新的5.0,这可如何是好呢,在网上搜索了一番,找到如下方法解决此问题: 1.打开xcode5.0的 ...