All Projects → jeduan → cordova-plugin-facebook4

jeduan / cordova-plugin-facebook4

Licence: other
Use the latest Facebook SDK in your Cordova and Ionic projects

Labels

Projects that are alternatives of or similar to cordova-plugin-facebook4

phonegap-template-vue-f7-tabs
A TabBar PhoneGap template using Vue.js and Framework7
Stars: ✭ 31 (-95.98%)
Mutual labels:  cordova
Create-a-custom-Cordova-plugin
How to create a custom cordova plugin and bridge it between your native code and a new or existing Cordova project
Stars: ✭ 32 (-95.85%)
Mutual labels:  cordova
ionic4-angular7-example
Ionic 4, Angular 7 and Cordova Tutorial: Build CRUD Mobile Apps
Stars: ✭ 57 (-92.62%)
Mutual labels:  cordova
cordova-wp8
[DEPRECATED] Apache Cordova WP8
Stars: ✭ 83 (-89.25%)
Mutual labels:  cordova
cordova-study
📱 Cordova学习记录,Cordova插件的使用,热更新、media、device、集成x5内核等等。
Stars: ✭ 19 (-97.54%)
Mutual labels:  cordova
AQMissionHelper
Route to the next Onyx - A mission helper tool for Niantic Ingress - Learn more at http://imaq.cn/mh/
Stars: ✭ 12 (-98.45%)
Mutual labels:  cordova
mipush-cordova-plugin
cordova小米推送插件
Stars: ✭ 22 (-97.15%)
Mutual labels:  cordova
nuxt-cordova-app
📱 Nuxt JS (Vue JS) + Vuetify 2 SPA hybrid demo app built using Cordova
Stars: ✭ 48 (-93.78%)
Mutual labels:  cordova
cordova-line-login-plugin
A cordova plugin for easy implementation of LINE login using LineSDK.
Stars: ✭ 20 (-97.41%)
Mutual labels:  cordova
cordova-plugin-downloadmanager
A Cordova plugin to download file in system's default download manager
Stars: ✭ 45 (-94.17%)
Mutual labels:  cordova
Kaput
Kişisel araç takip yazılımı
Stars: ✭ 69 (-91.06%)
Mutual labels:  cordova
cordova-tizen
[DEPRECATED] Apache Cordova Tizen
Stars: ✭ 31 (-95.98%)
Mutual labels:  cordova
ImageDetectionCordovaPlugin
Image detection cordova plugin
Stars: ✭ 99 (-87.18%)
Mutual labels:  cordova
cordova-plugin-exoplayer
Media player plugin for Cordova that uses Google's ExoPlayer
Stars: ✭ 48 (-93.78%)
Mutual labels:  cordova
ionic3-angular4-sample-app
Sample app of Ionic 3 and Angular 4
Stars: ✭ 35 (-95.47%)
Mutual labels:  cordova
cordova-plugin-purchases
Cordova in-app purchases and subscriptions made easy.
Stars: ✭ 52 (-93.26%)
Mutual labels:  cordova
cordova-build-architecture
Force cordova to build for arm or x86. Useful on PhoneGap Build.
Stars: ✭ 34 (-95.6%)
Mutual labels:  cordova
hms-cordova-plugin
This repo contains all of Cordova HMS plugins.
Stars: ✭ 78 (-89.9%)
Mutual labels:  cordova
cordova-serve
Apache Cordova Serve Library
Stars: ✭ 15 (-98.06%)
Mutual labels:  cordova
cordova-medic
[DEPRECATED] Apache Cordova Medic
Stars: ✭ 17 (-97.8%)
Mutual labels:  cordova

Important Notice

This plugin is not actively maintained anymore since March 2019.

IT IS NOT RECEIVING SECURITY UPDATES AND YOU MIGHT BE ADDING HARMFUL CODE TO YOUR PROJECT.

Please check out cordova-plugin-facebook-connect for an active fork. This repo is conserved for archival purposes only.

cordova-plugin-facebook4

Use Facebook SDK in Cordova projects

Table of contents

Installation

See npm package for versions - https://www.npmjs.com/package/cordova-plugin-facebook4

Make sure you've registered your Facebook app with Facebook and have an APP_ID https://developers.facebook.com/apps.

$ cordova plugin add cordova-plugin-facebook4 --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"

If you need to change your APP_ID after installation, it's recommended that you remove and then re-add the plugin as above. Note that changes to the APP_ID value in your config.xml file will not be propagated to the individual platform builds.

IMPORTANT: This plugin works as is with cordova-ios 5 but if you use earlier version of cordova-ios then you need to add the code in the following comment to your CordovaLib/Classes/Public/CDVAppDelegate.m file which was added to your project as part of the cordova-ios ios platform template: apache/cordova-ios#476 (comment)

Installation Guides

Usage

This is a fork of the official plugin for Facebook in Apache Cordova that implements the latest Facebook SDK. Unless noted, this is a drop-in replacement. You don't have to replace your client code.

The Facebook plugin for Apache Cordova allows you to use the same JavaScript code in your Cordova application as you use in your web application. However, unlike in the browser, the Cordova application will use the native Facebook app to perform Single Sign On for the user. If this is not possible then the sign on will degrade gracefully using the standard dialog based authentication.

Sample Repo

If you are looking to test the plugin, would like to reproduce a bug or build issues, there is a demo project for such purpose: cordova-plugin-facebook4-lab.

Compatibility

  • Cordova >= 5.0.0
  • cordova-android >= 4.0
  • cordova-ios >= 3.8
  • cordova-browser >= 3.6
  • Phonegap build (use phonegap-version >= cli-5.2.0, android-minSdkVersion>=15, and android-build-tool=gradle), see example here

Facebook SDK

This plugin use the SDKs provided by Facebook. More information about these in their documentation for iOS or Android

Facebook SDK version

As of v3.0.0, this plugin will always be released for iOS and for Android with a synchronized usage of the Facebook SDKs

For example: v3.0.0 include the Facebook SDK iOS v4.36.0 and reference per default the Facebook SDK Android v4.36.0 too

Graph API version

Please note that this plugin itself does not specify which Graph API version is used. The Graph API version is set by the Facebook SDK for iOS and Android (see Facebook documentation about versioning)

API

Login

facebookConnectPlugin.login(Array strings of permissions, Function success, Function failure)

Success function returns an Object like:

{
	status: "connected",
	authResponse: {
		session_key: true,
		accessToken: "<long string>",
		expiresIn: 5183979,
		sig: "...",
		secret: "...",
		userID: "634565435"
	}
}

Failure function returns an error String.

Logout

facebookConnectPlugin.logout(Function success, Function failure)

Check permissions (iOS only)

facebookConnectPlugin.checkHasCorrectPermissions(Array strings of permissions, Function success, Function failure)

Success function returns a success string if all passed permissions are granted.

Failure function returns an error String if any passed permissions are not granted.

Get Status

facebookConnectPlugin.getLoginStatus(Function success, Function failure)

Success function returns an Object like:

{
	authResponse: {
		userID: "12345678912345",
		accessToken: "kgkh3g42kh4g23kh4g2kh34g2kg4k2h4gkh3g4k2h4gk23h4gk2h34gk234gk2h34AndSoOn",
		session_Key: true,
		expiresIn: "5183738",
		sig: "..."
	},
	status: "connected"
}

For more information see: Facebook Documentation

Show a Dialog

facebookConnectPlugin.showDialog(Object options, Function success, Function failure)

Example options - Share Dialog:

{
	method: "share",
	href: "http://example.com",
	caption: "Such caption, very feed.",
	description: "Much description",
	picture: 'http://example.com/image.png',
	hashtag: '#myHashtag',
	share_feedWeb: true, // iOS only
}

iOS

The default dialog mode is FBSDKShareDialogModeAutomatic. You can share that by adding a specific dialog mode parameter. The available share dialog modes are: share_sheet, share_feedBrowser, share_native and share_feedWeb. Read more about share dialog modes

caption, description and picture were deprecated in Facebok API v2.9 and therefore not supported anymore on iOS

Game request:

{
	method: "apprequests",
	message: "Come on man, check out my application.",
	data: data,
	title: title,
	actionType: 'askfor',
	filters: 'app_non_users'
}

Send Dialog:

{
	method: "send",
	caption: "Check this out.",
	link: "http://example.com",
	description: "The site I told you about",
	picture: "http://example.com/image.png"
}

Share dialog - Open Graph Story: (currently only fully available on Android, iOS currently does not support action_properties)

{
	var obj = {};

	obj['og:type'] = 'objectname';
	obj['og:title'] = 'Some title';
	obj['og:url'] = 'https://en.wikipedia.org/wiki/Main_Page';
	obj['og:description'] = 'Some description.';

	var ap = {};
	
	ap['expires_in'] = 3600;
	
	var options = {
		method: 'share_open_graph', // Required
    	action: 'actionname', // Required
    	action_properties: JSON.stringify(ap), // Optional
    	object: JSON.stringify(obj) // Required
	};
}

In case you want to use custom actions/objects, just prepend the app namespace to the name (E.g: obj['og:type'] = 'appnamespace:objectname', action: 'appnamespace:actionname'. The namespace of a Facebook app is found on the Settings page.

For options information see: Facebook share dialog documentation Facebook send dialog documentation

Success function returns an Object with postId as String or from and to information when doing apprequest. Failure function returns an error String.

The Graph API

facebookConnectPlugin.api(String requestPath, Array permissions, Function success, Function failure)

Allows access to the Facebook Graph API. This API allows for additional permission because, unlike login, the Graph API can accept multiple permissions.

Example permissions:

["public_profile", "user_birthday"]

Success function returns an Object.

Failure function returns an error String.

Note: "In order to make calls to the Graph API on behalf of a user, the user has to be logged into your app using Facebook login."

For more information see:

Events

App events allow you to understand the makeup of users engaging with your app, measure the performance of your Facebook mobile app ads, and reach specific sets of your users with Facebook mobile app ads.

Activation events are automatically tracked for you in the plugin.

Events are listed on the insights page

Log an Event

logEvent(String name, Object params, Number valueToSum, Function success, Function failure)

  • name, name of the event
  • params, extra data to log with the event (is optional)
  • valueToSum, a property which is an arbitrary number that can represent any value (e.g., a price or a quantity). When reported, all of the valueToSum properties will be summed together. For example, if 10 people each purchased one item that cost $10 (and passed in valueToSum) then they would be summed to report a number of $100. (is optional)

Log a Purchase

logPurchase(Number value, String currency, Function success, Function failure)

NOTE: Both parameters are required. The currency specification is expected to be an ISO 4217 currency code

Manually log activation events

activateApp(Function success, Function failure)

Login

In your onDeviceReady event add the following

var fbLoginSuccess = function (userData) {
  console.log("UserInfo: ", userData);
}

facebookConnectPlugin.login(["public_profile"], fbLoginSuccess,
  function loginError (error) {
    console.error(error)
  }
);

Get Access Token

If you need the Facebook access token (for example, for validating the login on server side), do:

var fbLoginSuccess = function (userData) {
  console.log("UserInfo: ", userData);
  facebookConnectPlugin.getAccessToken(function(token) {
    console.log("Token: " + token);
  });
}

facebookConnectPlugin.login(["public_profile"], fbLoginSuccess,
  function (error) {
    console.error(error)
  }
);

Get Status and Post-to-wall

For a more instructive example change the above fbLoginSuccess to;

var fbLoginSuccess = function (userData) {
  console.log("UserInfo: ", userData);
  facebookConnectPlugin.getLoginStatus(function onLoginStatus (status) {
    console.log("current status: ", status);
    facebookConnectPlugin.showDialog({
      method: "share"
    }, function onShareSuccess (result) {
      console.log("Posted. ", result);
    });
  });
};

Getting a User's Birthday

Using the graph api this is a very simple task:

facebookConnectPlugin.api("<user-id>/?fields=id,email", ["user_birthday"],
  function onSuccess (result) {
    console.log("Result: ", result);
    /* logs:
      {
        "id": "000000123456789",
        "email": "[email protected]"
      }
    */
  }, function onError (error) {
    console.error("Failed: ", error);
  }
);

Publish a Photo

Send a photo to a user's feed

facebookConnectPlugin.showDialog({
    method: "share",
    picture:'https://www.google.co.jp/logos/doodles/2014/doodle-4-google-2014-japan-winner-5109465267306496.2-hp.png',
    name:'Test Post',
    message:'First photo post',
    caption: 'Testing using phonegap plugin',
    description: 'Posting photo using phonegap facebook plugin'
  }, function (response) {
    console.log(response)
  }, function (response) {
    console.log(response)
  }
);

Hybrid Mobile App Events

Starting from Facebook SDK v4.34 for both iOS and Android, there is a new way of converting pixel events into mobile app events. For more information: https://developers.facebook.com/docs/app-events/hybrid-app-events/

In order to enable this feature in your cordova app, please set the FACEBOOK_HYBRID_APP_EVENTS variable to "true"(default is false):

$ cordova plugin add cordova-plugin-facebook4 --save --variable APP_ID="123456789" --variable APP_NAME="myApplication" --variable FACEBOOK_HYBRID_APP_EVENTS="true"

Please check this repo for an example app using this feature.

NOTE(iOS): This feature only works with WKWebView so until Cordova iOS 5 is relased, an additional plugin (e.g cordova-plugin-wkwebview-engine) is needed.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].