Cum să setați accesul Facebook (de pe server) în Javascript SDK

Dacă utilizez fluxul de pe server pentru a autentifica un utilizator și pentru a obține un jeton de acces, cum pot seta acest atribut de acces în SDK-ul JavaScript și îl folosesc pentru a efectua apeluri de la client?

0

1 răspunsuri

Odată ce utilizatorul a terminat fluxul de autentificare de pe server, utilizatorul este deja autorizat pentru aplicația dvs., tot ce trebuie să faceți este să utilizați metoda FB.getLoginStatus :

FB.getLoginStatus(function(response) {
    if (response.status === "connected") {
        console.log("authResponse: ", response.authResponse);
        FB.api("me", function(response2) {
            console.log("Hey there " + response2.name);
        });
    }
    else if (response.status === "not_authorized") {
       //user is logged in to facebook but hasn't authorized your app, should not happen if he went through the server side authentication
    }
    else {
       //user is logged out of facebook, also should not happen
    }
}

După cum puteți vedea, puteți folosi pur și simplu JS sdk pentru a interoga graficul, nu este nevoie să obțineți manual tokenul, dar în cazul în care aveți încă nevoie de el, authResponse ar trebui să aibă următorul format:

authResponse: {
    accessToken: "aaaaaaa",
    expiresIn: "bbbbbb",
    signedRequest: "cccccc",
    userID: "dddddd"
}

Editați | ×

If the user is logged into facebook and has allowed and interacted with your app then yes the getLoginStatus should return a valid access token.
There are a few cases in which this is not the case, one of them being that the token has expired.

După cum se afirmă în Manipularea autentificărilor nevalide și expirate de acces :

Aplicațiile Web Web și mobile care implementează autentificarea cu SDK-ul Javascript

     

Apelarea FB.getLoginStatus() sau asigurarea stării: true este setată când ești   apel FB.init() înseamnă că data viitoare când un utilizator va ateriza pe dvs.   aplicație și este semnat în Facebook, obiectul authResponse vă   sunt transmise ca urmare a acestor apeluri va conține un nou, valabil   jeton de acces.

     

În acest caz, pur și simplu actul utilizatorului care utilizează aplicația   care implicit generează un nou simbol de acces.

0
adăugat
Mulțumesc acestui lucru nu mi-a fost deloc clar. Doar pentru a fi sigur că înțeleg. Odată ce un utilizator mi-a autorizat aplicația (dacă aceasta se face pe server sau pe client), atunci getLoginStatus va întoarce întotdeauna un autentic authToken și un strat "conectat" și nu va trebui să le reauthenticăm?
adăugat autor Chris Lukic, sursa
Editat răspunsul meu
adăugat autor Nitzan Tomer, sursa
Această soluție funcționează bine, mulțumesc. Am avut o singură problemă, answer.status se întoarce nulă când am deschis pagina mea neîncărcată și, înainte de a o reîncărca, s-a conectat într-o altă filă. Pentru a rezolva aceasta, trebuia să trec un al doilea parametru la FB.getLoginStatus: "true", care obligă SDK-ul să facă o nouă cerere pe Facebook și să actualizeze corect starea de conectare. În conformitate cu următorul articol, Facebook cache FB.getLoginStatus răspuns. develop
adăugat autor Tiago Peres França, sursa
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com