سؤال

أنا أتصل com.facebook.graph.facebook.init (app_id ، loginHandler) ؛

لتسجيل الدخول إلى Facebook باستخدام ActionScript API (كما هو موضح في هذا البرنامج التعليمي: http://www.adobe.com/devnet/facebook/articles/flex_fbgraph_pt4.html). ولكن ، لا يبدو أنه يفعل أي شيء.

بالنظر إلى مصدر API ، فإن المكالمة الوحيدة التي يتم إجراؤها على JS هي externalinterface.call ('fbas.init' ، json.encode (Options)) ؛

المكتبان JavaScript المطلوبان هما:

http://connect.facebook.net/en_US/all.js
FBJSBridge.js

ومع ذلك ، لا يمكنني العثور على أي إشارة إلى FBAs في هذه المكتبات. هل أنا حتى أستخدم المكتبات الصحيحة؟ هل هناك سبب آخر فاتني سبب عدم وجود FBAs؟ أو حتى لماذا استدعاء facebook.init () لا شيء؟

هل كانت مفيدة؟

المحلول

تم تضمين fbjsbridge.js في SDK. انظر إلى com.facebook.graph.core.facebookjsbridge.as ، وسترى أن كتلة JavaScript بأكملها التي كانت fbjsbridge.js يتم معالجتها على واجهة الخارجية في com.facebook.graph.facebook.as.

لقد كنت أعاني من هذا طوال اليوم. لقد كنت أشاهد HTTP يتم إنتاجها بواسطة Facebook.init () ، ويبدو أنه ينتظر فقط حتى يخرج ، وعند هذه النقطة يتم إنتاج آخر. لا يعود أبدًا بشكل طبيعي. لقد جربت Appid ، Apkikey هناك وجميع أنواع المعلمات ، لكنني لم أرها تعود أبدًا. يجب أن أختتم أن هذا هو ما يعنيه العمل. إذا لم يكن الأمر كذلك ، فهذه هي الطريقة التي تعمل بها. :-/

على أي حال ، سترى داخل FBAs في كتلة JS في Facebookjsbridge.as التي تشترك في حدث "Auth.SessionChange" الذي يؤدي إلى facebook.handlesessionchange (). يمكنك أن ترى هذا هو المكان الذي يسمى رد الاتصال الخاص بك. الحيلة هي أن هذا هو ما يسمى في أي وقت SessionChanges. لذلك ، حتى لو لم يكن ذلك في المرة القادمة التي تطلق فيها الحدث بسبب استجابة من FB.init () ، فسيظل رد الاتصال الخاص بك يتم استدعاؤه في تلك المرحلة.

إذا قمت بتعيين معالجك الخاص بـ "Auth.SessionChange" قبل الاتصال بـ Facebook.init () ، وقمت بتعيين "ملف تعريف الارتباط" على True ، ثم بعد إنشاء ملف تعريف الارتباط ، ستحصل على حدث SessionChange مباشرة بعد استدعاء init. لا يزال رد الاتصال الخاص بـ EIRT لا يتم استدعاؤه على الرغم من أن الحصول على رد.

Facebook.addJSEventListener("auth.sessionChange", onSessionChange);
Facebook.init(_appID, onInitFacebookConnect, 
      {cookie: true, 
       appId: _appID, 
       perms: "user_birthday,read_stream,publish_stream"});

قد تعمل الأمثلة التي ستجدها في هذا البرنامج التعليمي ، ولكنها ليست ما تريد استخدامه عند وضع تطبيق معًا بالفعل. وإلا فإنك ستنقر دائمًا على زر لتشغيل FBConnect. يبدو أن OAUTH2 سيكون الطريق للحصول على السلوك المطلوب لعدم الحاجة إلى النقر على زر في كل مرة "للاتصال". يمكنك الحصول على SessionKey من OAUTH2 ثم استخدام Flash/Facebook GraphSDK أو JS اعتمادًا على أيهما أكثر ملاءمة لما تحاول القيام به.

هذا قد يساعد:http://blog.yoz.sk/2010/05/facebook-graph-api- و-

نصائح أخرى

يبدو أن هناك أسباب متعددة تجعل هذا يفشل. انظر هذه الروابط:

http://code.google.com/p/facebook-actionscript-api/issues/detail؟id=165

http://www.pastrytech.com/willy/facebookactionscript3sdkexample.html

بالنسبة لي ، كان ترتيب علامات البرنامج النصي خاطئًا في ملف Wrapper الذي يوفره البرنامج التعليمي Adobe.

تأكد من إضافة مكتبة Facebook JS قبل SWFObject. أي تأكد من أن علامات البرنامج النصي في هذا الترتيب:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>

يحل محل

embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});    

مع

swfobject.embedSWF("MyApp.swf", "flashContent", "640", "480", "9.0", null, null, null, {name:"flashContent"});  

بمعنى آخر swfobject. inmbedswf

عملت مثل سحر!

في حالتي ، كان index.template.html هو الذي لم ينجح. كنت بحاجة: 1) إشارة إلى FB JS SDK
2) استخدم fb-root div كمدخل أول داخل علامة الجسم

التي حلت مشكلتي.

تحرير: لقد كنت مرتبكًا من أن facebook.init () يعمل فقط عند تسجيل الدخول. للمصادقة ، أسمي facebook.login

EDIT2: إعادة النظر في هذا الشيء ... هذه المرة فاتني أن عنوان URL Canvas يحتاج إلى الرجوع إلى صفحتك ، إن لم يكن بالطبع ، فإن المكالمة تذهب إلى صفحة أخرى ولم تتلق أبدًا استجابة. واضح ، لكنه ضربني مرة أخرى ......

يبدو أن FBAS.getSwf() يستخدم اسم من SWF في دعوتها إلى document.getElementById.

لذلك ، إذا قمت بتحديد معرف ولكن ليس اسمًا ، فإن Facebookjsbridge.as's JavaScript يبحث عن عنصر يحتوي على معرف NULL.

أو ، إذا قمت بتحديد اسم ولكن ليس معرفًا ، فإن Facebookjsbridge.as's JavaScript يبحث عن السلسلة المناسبة ، ولكن هناك عنصر بدون معرف.

إذا قمت بتحديد اسم ومعرف متطابق ، فيمكنه في الواقع العثور على SWF.


var appId = "1234567890";

var swfNameAndId = "app_" + appId;

swfobject.embedSWF("/swfs/TestApp.swf", "app_placeholder", 760, 450, "9.0.0", false, { "appId": appId }, { "allowscriptaccess": "always" }, { "name": swfNameAndId, "id": swfNameAndId });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top