#actionscript-3 #internet-explorer #actionscript #facebook-graph-api
#actionscript-3 #internet-explorer #actionscript #facebook-graph-api
Вопрос:
Я пытаюсь использовать Facebook Actionscript graph api, но, похоже, у меня возникают проблемы в IE (другие браузеры, такие как chrome и firefox, пока кажутся нормальными).
Насколько я могу судить, он нормально входит в систему и возвращает идентификатор пользователя, но когда я выполняю поиск по этому пользователю с Facebook.api (_user, handleUserRequest); Я получаю сообщение об ошибке.
Есть ли какие-либо известные проблемы с Facebook Actionscript graph api, которые влияют только на IE?
спасибо ob
По запросу — ошибка заключается в следующем:
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: https://graph.facebook.com/100002210990429?access_token=205690086123032|2.UzvN3mFr07kPAecZ7qN1Rg__.3600.1303135200.1-100002210990429|z9L_c26QKCc6cs2g5FClG_BsoZg"]
Это, если этот URL-адрес вставлен в chrome, он работает просто отлично, но IE возвращает «невозможно загрузить XXXXXXXX с graph.facebook.com ‘
лучший obie
код, который я использую, выглядит следующим образом:
package com.client.facebookgame.services
{
import com.client.facebookgame.services.events.FacebookServiceEvent;
import com.facebook.graph.data.FacebookSession;
import com.facebook.graph.Facebook;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.TimerEvent;
import flash.external.ExternalInterface;
import flash.net.URLRequestMethod;
import flash.utils.Timer;
import uk.co.thereceptacle.utils.Debug;
/**
* Facebook Service
*/
public class FacebookService extends EventDispatcher
{
// constants
public static const API_KEY : String = "XXXXXX";
public static const PERMISSIONS : String = "read_stream,publish_stream,user_likes";
public static const FB_REDIRECT_URL : String = "http://apps.facebook.com/appname/";
public static const LOGGED_IN : String = "loggedin";
public static const LOGGED_IN_ON_FB : String = "loggedinonfacebook";
public static const LOGGED_OUT : String = "loggedout";
public static const LOGGED_OUT_ON_FB : String = "loggedoutonfacebook";
public static const TIMEOUT_COUNT : int = 10;
public static const TIMER_DELAY : int = 3 * 1000;
// properties
private var _user : String;
private var _topUrl : String;
private var _currentState : String;
private var _timer : Timer;
private var _timerCount : int;
public var postObject : Object;
// constuctor
public function FacebookService()
{
if (ExternalInterface.available) _topUrl = ExternalInterface.call("top.location.toString");
Debug.log("facebook init", this);
Facebook.init(API_KEY, handleLogin);
startTiming();
currentState = _topUrl ? LOGGED_OUT : LOGGED_OUT_ON_FB;
}
// methods
public function login():void
{
Facebook.login(handleLogin, { perms: PERMISSIONS } );
}
public function logout():void
{
Facebook.logout(handleLogout);
}
public function selectUserFriendsWithAppRequestDialogue(message:String, dialogueType:String = "iframe", optionalPostObject:Object = null):void
{
this.postObject = optionalPostObject;
Facebook.ui("apprequests", { message:message }, handleAppRequest, dialogueType);
}
public function checkIfUserLikesApp():void
{
Facebook.api(_user "/likes", handleLikes);
}
private function startTiming():void
{
if (_timer) clearTimer();
_timer = new Timer(TIMER_DELAY, TIMEOUT_COUNT);
_timer.addEventListener(TimerEvent.TIMER, handleTimerEvents);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleTimerEvents);
_timer.start();
}
private function clearTimer():void
{
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, handleTimerEvents);
_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, handleTimerEvents);
_timer = null;
_timerCount = 0;
}
// event handlers
private function handleLogin(success:Object, fail:Object):void
{
if (_timer) clearTimer();
if (success)
{
Debug.log(success, this);
_user = success.uid;
currentState = _topUrl ? LOGGED_IN : LOGGED_IN_ON_FB;
Facebook.api("/" _user, handleGetUser);
}
else if (!success amp;amp; !_topUrl)
{
ExternalInterface.call("redirect", API_KEY, PERMISSIONS, FB_REDIRECT_URL);
}
}
private function handleGetUser(success:Object, fail:Object):void
{
Debug.log(success ", " fail, this);
if (success) dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.GET_USER_COMPLETE, success));
else dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.GET_USER_FAIL, fail, true));
}
private function handleAppRequest(result:Object):void
{
if (postObject)
{
for (var i:int = 0; i < result.request_ids.length; i )
{
var requestID:String = result.request_ids[i];
Facebook.api("/" requestID, handleRequestFriends);
}
}
}
private function handleRequestFriends(success:Object, fail:Object):void
{
if (success)
{
var friendID:String = success.to.id;
Facebook.api("/" friendID "/feed", handleSubmitFeed, postObject, URLRequestMethod.POST);
}
else
{
Debug.log(fail, this);
}
}
private function handleLikes(success:Object, fail:Object):void
{
if (success)
{
for (var i:int = 0; i < success.length; i )
{
Debug.log("compare " success[i].id " with key: " API_KEY, this);
if (success[i].id == API_KEY)
{
Debug.log("found that user liked this app!!!", this, true);
dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.USER_LIKES_APP, { userLikesApp:true } ));
return;
}
}
dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.USER_LIKES_APP, { userLikesApp:false } ));
}
else
{
Debug.log(fail, this, true);
}
}
private function handleLogout(obj:*):void
{
currentState = _topUrl ? LOGGED_OUT : LOGGED_OUT_ON_FB;
}
private function handleSubmitFeed(success:Object, fail:Object):void
{
if (success) dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.FEED_SUBMITTED, success));
else dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.FEED_FAIL, fail, true));
}
private function handleTimerEvents(e:TimerEvent):void
{
switch (e.type)
{
case TimerEvent.TIMER :
_timerCount ;
Debug.log("facebook init attempt " _timerCount, this);
Facebook.init(API_KEY, handleLogin);
break;
case TimerEvent.TIMER_COMPLETE :
clearTimer();
dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.GET_USER_FAIL));
break;
}
}
// accessors / mutators
public function get currentState():String { return _currentState; }
public function set currentState(value:String):void
{
if (_currentState != value)
{
_currentState = value;
dispatchEvent(new FacebookServiceEvent(FacebookServiceEvent.STATE_UPDATE));
}
}
}
}
Большое спасибо
ob
Комментарии:
1. Ни при каких обстоятельствах не сообщайте нам, какую ошибку вы получаете! Это лишило бы вас удовольствия от угадывания.
2. Что это за ошибка, которую вы получаете?
3. ROFL — извинения — ошибка, которую я получаю, является ошибкой: [IOErrorEvent type=»IOError» bubbles= false cancelable = false eventPhase = 2 text =»Ошибка # 2032: ошибка потока. URL: graph.facebook.com /…
4. вопрос был отредактирован с ошибкой
5. Никогда не публикуйте код, мы могли бы решить вашу проблему. Я не использую силу
Ответ №1:
я нашел ответ в списке проблем facebook actionscript:http://code.google.com/p/facebook-actionscript-api/issues/detail?id=197
Я также пытался найти решение, но единственное — опубликовать его с помощью flash Player 10
исправлена проблема для меня
Ответ №2:
Я столкнулся с такой же проблемой.Основной причиной этой проблемы является версия Flash Player. Используйте Flash Player 10 файл FaceBookGraphApi SWC совместим с Flash Player 10. Это решение предназначено только для тех, кто использует swc из GraphAPI_Examples_1_6_1