I'm trying to integrate Facebook 'Like' button into my Phonegap app (iOS and Android).
The easiest way is to c&p the same code as for simple web site:
<iframe src="http://www.facebook.com/plugins/like.php?..."...>></iframe>
It works perfectly (just like for normal web site) if user already logged in.
But if I log out from FB and then try to tap "Like" button I will be redirected to the FB login page and bad thing is that this page will be opened in new native browser window. So, after login it will not redirect me back to the app.
And also, if there is a way to open login page inside my app I think there still will be a problem with redirecting back to my app from FB (i.e. redirect to the local .html file)...
So, is there ANY way for Phonegap app to integrate with FB 'Like' feature somehow?
I don't think this is possible yet. The PhoneGap Facebook Connect plugin has promise, but at the time of writing this it still has a few niggles that would stop me deploying it - it's only been released for a week or two and it seems to have broken so second and subsequent logins to an app won't work. It seems like it will be really useful soon, but it's more volatile than even the standard volatility level of most Facebook integrations as it stands. Getting it to build against PhoneGap 1.1.0 yesterday also involved digging through issues in github and patching the Facebook SDK... so you'll have fun with that.
As far as I can see it doesn't support dialogs or social plugins yet, though for the base Facebook Connect use case it does solve the problem where Facebook users can be redirected out of your PhoneGap app to login either in the FB app or Safari and then bounced back into your app afterwards. It sounds like the plugin authors are working on more features, so I'll be keeping an eye on the project.
It sounds like you need the PhoneGap Facebook Connect plugin:
https://github.com/davejohnson/phonegap-plugin-facebook-connect
From the README:
"The Facebook Connect plugin for PhoneGap allows you to use the same JavaScript code in your web application as you use in your native PhoneGap application, but your native PhoneGap application will use the Facebook native app to perform single sign on (SSO) for the user."
Related
I am using the cordova-plugin-facebook-connect plugin to launch the share dialogs from Facebook. iOS is working great, and Android is working great when the app is installed.
On Android, if the app is not installed, it tries to share with an embedded web browser. After entering my email and password, I get an error saying that logging into Facebook from an embedded browser is disabled. I am using the latest version of the plugin, which SHOULD mean the latest Facebook Android SDK
I have looked on our business dashboard and made sure that embedded login is allowed:
...but that mentions OAuth so maybe it's not relevant. I have uploaded the debug and production key hashes to the dashboard
I have found nothing on the Facebook docs and I haven't gotten an answer from the Facebook developer community.
To sum up:
If the app is installed, it is all good. Without the app, it uses the embedded browser, but Facebook is blocking the login. I would love to know WHY and how to enable it.
UPDATE: Using a Facebook generated test user worked
Cheers
As Recommended by Facebook please update Dependencies to
implementation 'com.facebook.android:facebook-android-sdk:[8,9)'
Ref :
https://developers.facebook.com/docs/android/componentsdks/
https://developers.facebook.com/blog/post/2021/06/28/deprecating-support-fb-login-authentication-android-embedded-browsers/
Facebook has let everyone know that they are deprecating support for FB Login on Android embedded browsers:
https://developers.facebook.com/blog/post/2021/06/28/deprecating-support-fb-login-authentication-android-embedded-browsers/
As of right now, they are blocking High Risk users with this error and will block everyone starting in August. Their suggestion is to use a later version of the SDK (8.2+) to avoid this
I can't comment (yet) so I'm creating this answer to ask you if you could try and remove all (!) local browser data, i.e. Cookies and local storage, etc. This is the first thing that came to my mind when I read "works with another login".
The issue is resolved if the user has enabled 2-factor authentication via facebook.
I have tested this with multiple real users now and for example enabling sms-2fa does enable the user to login into apps with an embedded browser. The login happens as usual if the user has the facebook app installed on the same device and already logged in on the facebook app with 2fa. Otherwise, facebook will request the 2fa when logging in but a login is possible again.
I have however found out that some apps seem to crash if they had been opened before 2fa had been activated on a phone with a facebook app and those apps need to restarted before trying to login on them again.
From this we can assume facebook blocks out embedded browsers due to their risk assessment. 2fa is specifically presented as an option to login via unsafe browsers within the security options of each user individually and sadly does not seem to be an issue on the side of who ever is using an embedded browser within their app.
This also happened to me but I've fixed it.
I just uninstalled my Facebook application and used my browser instead.
Try installing another browser, like Firefox, and set this the default browser, then login again with your Facebook credentials. It worked to me. I guess the problem is with chrome. For me, it worked when I set Firefox my default browser.
For your account security, logging in to Facebook from an embedded browser is disabled. You may be able to continue by updating the app you're logging in from and trying again.
The code works properly from dev portal of microsoft. But can anyone please tell me how it should behave in following use case
Consider two apps: App1 and App2
I have developed same code and installed both apps simultaneously
App1 as launched first will ask me credentials for the webview. Thats fine. as I have not cache or already logged in till date.
Once I log in successfully, The apps works properly as auto login
Now when I open App2, it still throws me Login page. Ideally it should take cache of App1 and auto login.
Please note: I have provided same 'shared id' in both apps in manifest
Please let me know about thus as i am stuck with internal Single Sign on issue since long
I see you have tagged the question with ADAL, so I'll assume that's the library you're using. ADAL uses webviews to prompt for sign in. Webviews in Android do not share much state between apps, and are pretty much completely sandboxes (isolated and do not share session cookies, etc).
Now, you most definitely can achieve SSO for Android using ADAL, you have 2 options:
Brokered SSO
Using a broker application, like the Microsoft Authenticator, the end user basically signs in here such that they're able to maintain a session inside the Broker's sandbox. This allows any app that signs in Azure AD users to share state. The article linked above explains how to enable your app to use the broker.
Non-Brokered SSO
You can configure SSO between all of the apps you own. This means an end user will get SSO between App 1, App 2, App N, but not necessarily another App in the Azure AD ecosystem. The article linked above explains how to enable your app to use non-brokered SSO.
Bonus Option: v2 with MSAL
I said earlier ADAL uses webviews for sign in, there's another way to do it that the Microsoft Authentication Library (MSAL) supports using the system's browser. Quite simply, this uses the Chrome or a Chrome custom tab browser on the device rather than the in-app webview. Then, the session cookie is set on the global browser so any app that also uses the browser (or if the end user has used the browser natively to sign in) will get SSO. The stipulation here is MSAL works against the Azure AD v2.0 endpoint which has some limitations, but also supports some sign in with Microsoft Accounts (*.outlook, *.live, etc) out of the box.
If you're interested in trying v2 + MSAL, I recommend trying the Android Guided Walkthrough which walks you through how to build an app that calls the Microsoft Graph.
I have seen several flavours of this question going around but nothing exactly specific nor answered so trying it myself.
I am trying to build a Facebook login experience via the browser into my Facebook-based app that will require the users to not remember their passwords as much as possible. This means that if
they log in via their desktop browser and are already logged in, it will only ask them to 'OK' the permissions
they log in from their mobile browser and are logged in via their respective native app (Android/iOS), it will simply redirect them to the native app, ask for the app permissions and redirect them back to the success page on the browser
they log in from any browser and are not currently logged onto Facebook in any form, they have to enter their password and authenticate (whether natively or via browser this does not matter)
I know how the first can be done - that is pretty straightforward using the JS SDK. The second point is the tougher bit.
I am aware of existing custom URL schemes for Android and iOS but nothing specifically really mentions how that can be used for authentication and/or authorisation of Facebook apps. Does anyone have any ideas on how this can be done?
Thanks!
In iOS use iOS facebook SDK. It will handle the login process effectively in different situations depending on the resources available. Check out this answer to know about different login flows
Integrating facebook
You're looking for Single Sign On behavior- in Facebook, use the native SDK, and instructions for setting up SSO. It includes entering your bundle id in the settings and setting up a referring url name (the name of your app usually). So what happens is- if you launch safari mobile, and log into facebook. Then, launch your app, with good integrated SSO. Then, it won't require you to login/pass, because it knows you've authenticated via browser. Same with Android.
I think what you are looking for (at least for Android) is starting an Intent on certain schema that will open Facebook app.
This is answered here Android facebook intent to show profile with class com.facebook.katana.ProfileTabHostActivity doesn't work any more
I'm building a phonegap app which will install on android.
I want to somehow allow sharing features on twitter, etc. So you could create a 'post' in the app and people can share it on twitter probably linking to a domain containing the post.
Is there any way in phonegap to allow this link from say twitter (in a browser), to open in the installed app version?
The installed app follows the same url combinations as the web version.
My tutorial: TMT5P1 lets the user log in to their twitter account from the app. Then they can tweet, see tweets, mentions, etc from the PhoneGap / Android app. Twitter actions are integrated into the app, instead of making the user leave the app to go to twitter website.
Requires child browser plugin for secure login.
new to phonegap programing development.having one issue that i need to authonticate user via facebook/twitter & if authontication goes true on basis of that need to upload some image to server..i have stuck on this issue..i could found this one facebook sdk for phonegap android.i have downloaded this one plugin https://github.com/davejohnson/phonegap-plugin-facebook-connect but when implemented it just redirects to facebook page to browser,it dosen't opening popup of facebook login page as we can see in native android application...so any guide for that?
Thanks in advance
Aamirkhan i.
We've recently developed an iOS phonegap app. We had to pull a feed from Twitter (to our Grails server component) and elected to use Twitter4J as it simplified the process. Here's a code example on the Twitter4J site focussed particularly on authentication. Hope it helps. Good luck!
When you get redirected to the web page instead of the popup it means that the facebook app is not installed on your phone. This is unfortunately necessary now with the new FB jar.