{"id":13744187,"url":"https://github.com/myflashlab/facebook-ANE","last_synced_at":"2025-05-09T02:32:54.727Z","repository":{"id":82895666,"uuid":"39259378","full_name":"myflashlab/facebook-ANE","owner":"myflashlab","description":"This air native extension is your best solution to integrate Facebook SDK into your AdobeAir apps","archived":true,"fork":false,"pushed_at":"2020-10-14T18:25:18.000Z","size":171319,"stargazers_count":30,"open_issues_count":0,"forks_count":15,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-11-15T15:42:18.581Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"ActionScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/myflashlab.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-07-17T14:53:32.000Z","updated_at":"2023-01-28T00:44:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"f0f74498-34e1-44fc-8eb7-6f1e3e28fc76","html_url":"https://github.com/myflashlab/facebook-ANE","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myflashlab%2Ffacebook-ANE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myflashlab%2Ffacebook-ANE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myflashlab%2Ffacebook-ANE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myflashlab%2Ffacebook-ANE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myflashlab","download_url":"https://codeload.github.com/myflashlab/facebook-ANE/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253177860,"owners_count":21866409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T05:01:04.738Z","updated_at":"2025-05-09T02:32:53.606Z","avatar_url":"https://github.com/myflashlab.png","language":"ActionScript","funding_links":[],"categories":["Native Extension","AIR Native Extensions"],"sub_categories":["Social ANE"],"readme":"# Facebook SDK ANE (Android + iOS)\nUse this AIR Native Extension to implement the latest official Facebook SDK into your AIR applications.\n\nMain features:\n* Login/logout\n* ask users for permissions\n* decide on your app logic based on granted permissions\n* Share URL links directly from your app\n* send Game Requests to friends\n* Support App Events for use in Facebook analytics\n* full access to Facebook Graph API... the sky is the limit!\n* works on Android and iOS with an identical AS3 library\n\n[find the latest **asdoc** for this ANE here.](https://myflashlab.github.io/asdoc/com/myflashlab/air/extensions/fb/package-detail.html)\n\n# AIR Usage\n###### Login sample. [find more samples in repository](https://github.com/myflashlab/facebook-ANE/tree/master/AIR/src)\n```actionscript\nimport com.myflashlab.air.extensions.fb.*;\n\nFacebook.init(\"000000000000000\");\n\n// Add these listeners right after initializing the ANE but don't call any other method before FacebookEvents.INIT happens\nFacebook.listener.addEventListener(FacebookEvents.INIT, onAneInit);\nFacebook.listener.addEventListener(FacebookEvents.INVOKE, onAneInvoke);\n\n// You can receive the hashKey for your Android certificate like below.\nif (OverrideAir.os == OverrideAir.ANDROID) trace(\"hash key = \", Facebook.hashKey);\n\nfunction onAneInvoke(e:FacebookEvents):void\n{\n\ttrace(\"onAneInvoke: \" + decodeURIComponent(e.deeplink));\n}\n\nfunction onAneInit(e:FacebookEvents):void\n{\n\ttrace(\"onAneInit\");\n\t\n\t// check if user is already logged in or not\n\t_accessToken = Facebook.auth.currentAccessToken;\n\t\n\t/*\n\t\tIMPORTANT: in practice you should let users click on a login button \n\t\tnot logging them automatically.\n\t*/\n\tif(!_accessToken) toLogin();\n}\n\nfunction toLogin():void\n{\n\t/*\n\t\tIt is recommended to login users with minimal permissions. Later, whe your app \n\t\tneeds more permissions, you can call \"Facebook.auth.login\" again with more permissions.\n\t\t\n\t\tTo ask for publish permissions, set the first parameter to \"true\".\n\t*/\n\n\tvar permissions:Array = [Permissions.public_profile, Permissions.user_friends, Permissions.email];\n\tFacebook.auth.login(false, permissions, loginCallback);\n\t\n\tfunction loginCallback($isCanceled:Boolean, $error:Error, $accessToken:AccessToken, $recentlyDeclined:Array, $recentlyGranted:Array):void\n\t{\n\t\tif($error)\n\t\t{\n\t\t\ttrace(\"login error: \" + $error.message);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif($isCanceled)\n\t\t\t{\n\t\t\t\ttrace(\"login canceled by user\");\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttrace(\"$recentlyDeclined: \" + $recentlyDeclined);\n\t\t\t\ttrace(\"$recentlyGranted: \" + $recentlyGranted);\n\t\t\t\t\n\t\t\t\t_accessToken = $accessToken;\n\t\t\t\t\n\t\t\t\ttrace(\"token: \" + _accessToken.token);\n\t\t\t\ttrace(\"userId: \" + _accessToken.userId);\n\t\t\t\ttrace(\"declinedPermissions: \" + _accessToken.declinedPermissions);\n\t\t\t\ttrace(\"grantedPermissions: \" + _accessToken.grantedPermissions);\n\t\t\t\ttrace(\"expiredPermissions: \" + _accessToken.expiredPermissions);\n\t\t\t\ttrace(\"expiration: \" + new Date(_accessToken.expiration).toLocaleDateString());\n\t\t\t\ttrace(\"lastRefresh: \" + new Date(_accessToken.lastRefresh).toLocaleDateString());\n\t\t\t\ttrace(\"dataAccessExpirationDate: \" + new Date(_accessToken.dataAccessExpirationDate).toLocaleDateString());\n\t\t\t}\n\t\t}\n\t}\n}\n```\n\n# AIR .xml manifest\n```xml\n  \u003candroid\u003e\n    \u003cmanifestAdditions\u003e\n\t\t\u003c![CDATA[\u003cmanifest android:installLocation=\"auto\"\u003e\n\t\t\u003cuses-permission android:name=\"android.permission.WAKE_LOCK\" /\u003e\n\t\t\u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n\t\t\n\t\t\u003cuses-sdk android:minSdkVersion=\"19\" android:targetSdkVersion=\"28\"/\u003e\n\t\t\n\t\t\u003capplication \n\t\t\tandroid:hardwareAccelerated=\"true\" \n\t\t\tandroid:allowBackup=\"true\"\n\t\t\tandroid:name=\"android.support.multidex.MultiDexApplication\"\u003e\n\n\t\t\t\u003cactivity android:hardwareAccelerated=\"false\"\u003e\n\t\t\t\t\u003cintent-filter\u003e\n\t\t\t\t\t\u003caction android:name=\"android.intent.action.MAIN\" /\u003e\n\t\t\t\t\t\u003ccategory android:name=\"android.intent.category.LAUNCHER\" /\u003e\n\t\t\t\t\u003c/intent-filter\u003e\n\t\t\t\t\u003cintent-filter\u003e\n\t\t\t\t\t\u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n\t\t\t\t\t\u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n\t\t\t\t\t\u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n\t\t\t\t\t\n\t\t\t\t\t\u003c!-- Your application scheme. read here for more information: http://www.myflashlabs.com/open-adobe-air-app-browser-pass-parameters/ --\u003e\n\t\t\t\t\t\u003cdata android:scheme=\"[PACKAGE_NAME]\" /\u003e\n\t\t\t\t\u003c/intent-filter\u003e\n\t\t\t\u003c/activity\u003e\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\u003c!-- \n\t\t\t\tThis is required by the Facebook ANE. replace the zeros with your actual Facebook App ID\n\t\t\t\tWhile doing that, notice the empty space after the \"\\ \". This is required because the ANE \n\t\t\t\tmust see the value as an String.\n\t\t\t--\u003e\n\t\t\t\u003cmeta-data android:name=\"com.facebook.sdk.ApplicationId\" android:value=\"\\ 000000000000000\"/\u003e\n\t\t\t\n\t\t\t\u003c!-- This is required by the Facebook ANE for logging in --\u003e\n\t\t\t\u003cactivity \n\t\t\t\tandroid:name=\"com.facebook.FacebookActivity\" \n\t\t\t\tandroid:configChanges=\"keyboard|keyboardHidden|screenLayout|screenSize|orientation\"\n\t\t\t\tandroid:theme=\"@android:style/Theme.Translucent.NoTitleBar\" \n\t\t\t\tandroid:label=\"My App Name\" /\u003e\n\t\t\t\n\t\t\t\u003cactivity android:name=\"com.facebook.CustomTabMainActivity\" /\u003e\n\t\t\t\u003cactivity android:name=\"com.facebook.CustomTabActivity\" android:exported=\"true\"\u003e\n\t\t\t\t\u003cintent-filter\u003e\n\t\t\t\t\t\u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n\t\t\t\t\t\u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n\t\t\t\t\t\u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n\t\t\t\t\t\u003cdata android:scheme=\"fb000000000000000\" /\u003e\n\t\t\t\t\u003c/intent-filter\u003e\n\t\t\t\u003c/activity\u003e\n\t\t\t\n\t\t\t\u003cprovider android:authorities=\"com.facebook.app.FacebookContentProvider000000000000000\" android:name=\"com.facebook.FacebookContentProvider\" android:exported=\"true\"/\u003e\n\n\t\t\t\u003creceiver\n\t\t\t\tandroid:name=\"com.facebook.CurrentAccessTokenExpirationBroadcastReceiver\" android:exported=\"false\"\u003e\n\t\t\t\t\u003cintent-filter\u003e\n\t\t\t\t\t\u003caction android:name=\"com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED\" /\u003e\n\t\t\t\t\u003c/intent-filter\u003e\n\t\t\t\u003c/receiver\u003e\n\n\t\t\t\u003creceiver\n                android:name=\"com.facebook.CampaignTrackingReceiver\"\n                android:exported=\"true\"\n                android:permission=\"android.permission.INSTALL_PACKAGES\"\u003e\n                \u003cintent-filter\u003e\n                    \u003caction android:name=\"com.android.vending.INSTALL_REFERRER\"/\u003e\n                \u003c/intent-filter\u003e\n            \u003c/receiver\u003e\n\n\t\t\u003c/application\u003e\n\t\t\n\u003c/manifest\u003e]]\u003e\u003c/manifestAdditions\u003e\n  \u003c/android\u003e\n  \u003ciPhone\u003e\n\n    \u003cInfoAdditions\u003e\n\t\t\u003c![CDATA[\u003ckey\u003eMinimumOSVersion\u003c/key\u003e\n\t\t\u003cstring\u003e10.0\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eUIStatusBarStyle\u003c/key\u003e\n\t\t\u003cstring\u003eUIStatusBarStyleBlackOpaque\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eUIRequiresPersistentWiFi\u003c/key\u003e\n\t\t\u003cstring\u003eNO\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eFacebookAppID\u003c/key\u003e\n\t\t\u003cstring\u003e000000000000000\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eFacebookDisplayName\u003c/key\u003e\n\t\t\u003cstring\u003eAir Native Extension\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eCFBundleURLTypes\u003c/key\u003e\n\t\t\u003carray\u003e \n\t\t\t\u003cdict\u003e\n\t\t\t\t\u003ckey\u003eCFBundleURLSchemes\u003c/key\u003e\n\t\t\t\t\u003carray\u003e\n\t\t\t\t\t\u003cstring\u003efb000000000000000\u003c/string\u003e\n\t\t\t\t\t\n\t\t\t\t\t\u003c!-- Your application scheme. read here for more information: http://www.myflashlabs.com/open-adobe-air-app-browser-pass-parameters/ --\u003e\n\t\t\t\t\t\u003cstring\u003e[PACKAGE_NAME]\u003c/string\u003e\n\t\t\t\t\u003c/array\u003e\n\t\t\t\u003c/dict\u003e\n\t\t\u003c/array\u003e\n\n\t\t\u003ckey\u003eLSApplicationQueriesSchemes\u003c/key\u003e\n\t\t\u003carray\u003e\n\t\t\t\u003cstring\u003efbapi\u003c/string\u003e\n\t\t\t\u003cstring\u003efb-messenger-api\u003c/string\u003e\n\t\t\t\u003cstring\u003efb-messenger-share-api\u003c/string\u003e\n\t\t\t\u003cstring\u003efb-messenger\u003c/string\u003e\n\t\t\t\u003cstring\u003efbauth2\u003c/string\u003e\n\t\t\t\u003cstring\u003efbshareextension\u003c/string\u003e\n\t\t\u003c/array\u003e\n\t\t\t\n\t\t\u003ckey\u003eNSPhotoLibraryUsageDescription\u003c/key\u003e\n\t\t\u003cstring\u003eMy description about why I need this feature in my app\u003c/string\u003e\n\t\t\n\t\t\u003ckey\u003eUIDeviceFamily\u003c/key\u003e\n\t\t\u003carray\u003e\n\t\t\t\u003c!-- iPhone support --\u003e\n\t\t\t\u003cstring\u003e1\u003c/string\u003e\n\t\t\t\u003c!-- iPad support --\u003e\n\t\t\t\u003cstring\u003e2\u003c/string\u003e\n\t\t\u003c/array\u003e]]\u003e\u003c/InfoAdditions\u003e\n\t\t\n    \u003crequestedDisplayResolution\u003ehigh\u003c/requestedDisplayResolution\u003e\n  \u003c/iPhone\u003e\n  \n  \n  \n  \u003cextensions\u003e\n  \n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.facebook\u003c/extensionID\u003e\n\n\t\u003c!-- Needed on Android/iOS --\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.overrideAir\u003c/extensionID\u003e\n\n\t\u003c!-- Needed on Android ONLY --\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.overrideAir\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.arch\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.cardview\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.core\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.design\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.lifecycle\u003c/extensionID\u003e\n\t\u003cextensionID\u003ecom.myflashlab.air.extensions.dependency.androidx.utils\u003c/extensionID\u003e\n\n  \u003c/extensions\u003e\n```\n\n# Requirements:\n1. This ANE is dependent on the following ANEs. [Download them from here:](https://github.com/myflashlab/common-dependencies-ANE)\n\t- androidx_arch.ane\n\t- androidx_cardview.ane\n\t- androidx_core.ane\n\t- androidx_design.ane\n\t- androidx_lifecycle.ane\n\t- androidx_utils.ane\n\t- overrideAir.ane\n\t- AIR SDK V30+\n3. To compile on iOS, you will need to add following Facebook frameworks to your Air SDK.\n  - download [iOS Facebook SDK](https://github.com/facebook/facebook-objc-sdk/releases/download/v6.5.2/FacebookSDK_Static.zip) package and extract it on your computer.\n    * FBSDKCoreKit.framework\n    * FBSDKLoginKit.framework\n    * FBSDKShareKit.framework\n    * FBSDKPlacesKit.framework\n  - you will see some xxxxxx.framework files. copy them as they are and go to your AdobeAIR SDK.\n  - when in your Air SDK, go to \"\\lib\\aot\\stub\". there you will find all the iOS frameworks provided by Air SDK by default.\n  - paste the facebook frameworks you had downloaded into this folder and you are ready to build your project.\n4. Android SDK 19 or higher \n5. iOS 10.0 or higher\n6. In case you see the following error messages when compiling for iOS, check out [this video clip](https://www.youtube.com/watch?v=m4bwZRCvs2c) to know how to resolve it.\n```\nld: library not found for -lclang_rt.ios\n``` \nor \n```\nUndefined symbols ___isOSVersionAtLeast\n``` \n7. There's a known bug as follow on windows machines when compiling for iOS. To avoid that, you will need a Mac to compile your project for iOS. We are hoping that Adobe would fix this problem soon so the app can be correctly packaged on Windows machines also. vote up here https://tracker.adobe.com/#/view/AIR-4198557\n```\nld: in C:\\AIR_SDK\\lib\\aot/stub/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKApplicationDelegate.o), unsupported address encoding (A5) of personality function in CIE for architecture arm64\nCompilation failed while executing : ld64\n```\n\n# Commercial Version\nhttps://www.myflashlabs.com/product/facebook-ane-adobe-air-native-extension/\n\n[![Facebook SDK ANE](https://www.myflashlabs.com/wp-content/uploads/2015/11/product_adobe-air-ane-extension-facebook-2018-595x738.jpg)](https://www.myflashlabs.com/product/facebook-ane-adobe-air-native-extension/)\n\n# Tutorials\n* [How to embed ANEs into **FlashBuilder**, **FlashCC** and **FlashDevelop**](https://www.youtube.com/watch?v=Oubsb_3F3ec\u0026list=PL_mmSjScdnxnSDTMYb1iDX4LemhIJrt1O)  \n* [Usage WIKI](https://github.com/myflashlab/facebook-ANE/wiki)\n\n# Premium Support #\n[![Premium Support package](https://www.myflashlabs.com/wp-content/uploads/2016/06/professional-support.jpg)](https://www.myflashlabs.com/product/myflashlabs-support/)\nIf you are an [active MyFlashLabs club member](https://www.myflashlabs.com/product/myflashlabs-club-membership/), you will have access to our private and secure support ticket system for all our ANEs. Even if you are not a member, you can still receive premium help if you purchase the [premium support package](https://www.myflashlabs.com/product/myflashlabs-support/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyflashlab%2Ffacebook-ANE","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyflashlab%2Ffacebook-ANE","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyflashlab%2Ffacebook-ANE/lists"}