[js] Ingelogd op Facebook?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
In het kader van de nieuwe cookiewet, heb ik de opdracht gekregen om een like-knop te maken die geen gebruik maakt van cookies, als de bezoeker niet op facebook is ingelogd. Dan zou-ie voldoen aan de cookiewet (disussie daarover wil ik hier nu niet voeren. het gaat nu even om de techniek). Ik gebruik daarvoor de API van FB via jQuery. Dit had ik eerst:
JavaScript:
1
2
3
4
5
6
7
var script = $.getScript("//connect.facebook.net/en_US/all.js");
script.then(function() {
  FB.init({ cookie: false, logging: true, status: true, xfbml: false });
  FB.getLoginStatus(function(response) {
    console.log("getLoginStatus", response);
  }, true);
});

Er wordt geen cookie gezet. Dat gedeelte gaat dus goed, maar ik krijg een andere rare error:
FB.getLoginStatus() called before calling FB.init().
Okay, de API werkt dus op zich wel, maar het doet iets dat niet klopt. getLoginStatus() staat duidelijk ná init(), of ben ik aan koffie toe :?
Duidelijk een bug in FB dus, maarja, ga FB maar es wijsmaken dat ze aan het werk moeten. Het idee alleen al. Zoals je ziet, gebruik ik de "force" parameter in de call ook al, wat een veelgemaakte tip is. Maar dat is het probleem hier helemaal niet.

Elders had ik gevonden dat je een API key nodig hebt. Dat is goed en wel, maar die heb ik niet en kan ik ook niet aanvragen, en wel om drie redenen:
  1. Facebook wil daarvoor eerst mijn mobiele nummer verifieren of mijn creditcard gebruiken. Geen van beide gaat gebeuren.
  2. Je schijnt een url op te moeten geven, en er is geen url. Dit is nml geen website, maar (wordt) een jQuery-plugin.
  3. Gebruikers (van mijn code) een API-key te laten opvragen is sowieso onzin, want voor de "gewone" like-knop hoeft dat allemaal ook niet - die ziet ook of een bezoeker ingelogd is.
Daarbij staat in de documentatie dat de api key optioneel is, dus moet ie dat ook zijn.

Vervolgens heb ik deze drie events nog geprobeerd:
JavaScript:
1
2
3
4
5
6
7
8
9
FB.Event.subscribe("auth.logout", function(response) {
  console.log("auth.logout", response);
});
FB.Event.subscribe("auth.login", function(response) {
  console.log("auth.login", response);
});
FB.Event.subscribe("auth.authResponseChange", function(response) {
  console.log("auth.authResponseChange", response);
});

Geen van drie wordt aangeroepen, maar geven ook geen errors of iets. Silent fail.

Okay, het komt er dus op neer dat die API niet echt mee wil werken. Eigenlijk wil ik alleen maar kijken of de bezoeker ingelogd is. Ik hoef geen naam of e-mail adres op te vissen, ik hoef geen facebook-api als die niet nodig is, ik hoef geen sessie-id, geen cookie-rommel, of andere privacy-informatie. Ik wil kort door de bocht eigenlijk alleen maar een "ja" of een "nee" ergens van terugkrijgen.

Maar hoe moet dat?

日本!🎌


Acties:
  • 0 Henk 'm!

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 09:56
Heb je ook daadwerkelijk geprobeerd om een API key aan te vragen bij Facebook? Al die dingen die jij noemt heb ik nooit op hoeven geven, en hoef ik nu ook niet op te geven als ik een nieuwe applicatie toevoeg.

Als ik de documentatie van de init methode bekijk staat er dit:
After loading the JavaScript SDK, call FB.init to initialize the SDK with your app ID. This will let you make calls against the Facebook API.
Lijkt me dus raar als je die kan gebruiken zonder een API key, ook al is het argument optioneel.

[ Voor 3% gewijzigd door IceM op 03-07-2012 22:46 ]

...


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Welke gedeelde aan "optioneel" is dan verplicht? Als iets optioneel is, dan is het toch niet verplicht om mee te geven? De API geeft ook geen errors ofzo als ik de init() zonder API-key aanroep.

Maar, ja, ik heb het geprobeerd. Het eerste dat FB van me vraagt, is een mobiel nummer waar ze dan een SMS naartoe moeten sturen die ik vervolgens moet overtypen. Ik ga FB dus echt niet mijn mobiele nummer geven. Als alternatief mag ik ook mijn creditcard invullen, compleet met naam en CSC-nummer natuurlijk. No fucking way, heh.

Kan ik niet ergens een API key krijgen zonder dat ik een account heb? Ik wil nml maar iets poepsimpels doen: "is de bezoeker ingelogd ja of nee". Ik voel er sowieso weinig voor dat gebruikers (van mijn plugin) straks een API-key gebruiken die aan mijn account gekoppeld is. Dat zullen zij ook niet handig vinden. Het moet gewoon een algemeen iets zijn, dus een url/namespace (die dus uniek is) of een API-key die niet aan een account vast zit.

Of natuurlijk een minder gewichtige manier om achter de login-status te komen. Het hoeft wat mij betreft helemaal niet met de API...

日本!🎌


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 22-09 11:37

TheNephilim

Wtfuzzle

Je kunt wel moeilijk doen en je telefoonnummer niet willen afgeven, maar dan is het probleem misschien opgelost, of in ieder geval duidelijker waar het ligt.

Ik zie het probleem niet zo, je telefoonnummer eenmalig gebruiken hiervoor, maar desnoods haal je een prepaid kaartje. Dan heb je geen problemen met 'privacy', maar kun je wel kijken of die API key het probleem is.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 24-09 08:45
_Thanatos_ schreef op woensdag 04 juli 2012 @ 02:30:
Maar, ja, ik heb het geprobeerd. Het eerste dat FB van me vraagt, is een mobiel nummer waar ze dan een SMS naartoe moeten sturen die ik vervolgens moet overtypen. Ik ga FB dus echt niet mijn mobiele nummer geven. Als alternatief mag ik ook mijn creditcard invullen, compleet met naam en CSC-nummer natuurlijk. No fucking way, heh.
Dan koop je op de kosten van de opdrachtgever een SIM kaart van een € of 5. Dit is gewoon moeilijk doen zonder dat het nodig is.

Acties:
  • 0 Henk 'm!

  • aegis
  • Registratie: Augustus 2002
  • Laatst online: 24-09 10:26
als het voor een opdracht gever is laatje het gewoon op hun telefoon nummer doen of hun CC toch?

https://bettyskitchen.nl


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Topicstarter
Dan zit de API key nog steeds aan mijn account vast. Ik wil dat de key helemaal niet aan een account vast zit, zodat uiteindelijk iedereen het kan gebruiken.

Vandaar dat ik het liever zonder API key doe, want ik ben helemaal niets aan het bouwen dat redelijkerwijs een API-key nodig heeft. Om mezelf voor de tweede keer te herhalen, ik alléééén maar weten of de bezoeker ingelogd is.

[ Voor 42% gewijzigd door _Thanatos_ op 04-07-2012 12:43 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • IceM
  • Registratie: Juni 2003
  • Laatst online: 09:56
Met de facebook API lijkt dat niet mogelijk, misschien is zoiets een oplossing: https://grepular.com/Abus...xpose_Private_Information

Zie ook: http://stackoverflow.com/...-is-logged-in-to-facebook

...


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Kun je wellicht wat met wat er in de manual staat? Het lijkt mij namelijk dat het script asynchrone calls maakt en de status ophaalt. Dat je dan met de .getLoginStatus de status probeert op te halen wanneer deze nog niet gezet is, dan kun je zo'n dergelijke message verwachten.
Checking user status on page load

While you can call FB.getLoginStatus any time (for example, when the user tries to take a social action), most social apps need to know the user's status as soon as possible after the page loads. In this case, rather than calling FB.getLoginStatus explicitly, it is possible to check the user's status by setting status: true when you call FB.init.

To receive the response of this call, you must subscribe to the auth.statusChange event. The response object passed by this event is identical to that which would be returned by calling FB.getLoginStatus explicitly.
Pagina: 1