Statistik ”avklarad” och frågan om Oauth2

Det var onsdag den 30 oktober 2019 när jag började skriva något om statistik på den här bloggen. Det har blivit 20 inlägg i den kategorin och nu är jag klar med den kurs jag gått under senhösten/vintern. Jag har behandlat ämnen så som sannolikhet, standardavvikelser, standardiserade värden, normalfördelning, hypoteser, centrala gränsvärdessatsen, konfidensintervall, proportioner, chi2 och linjär regression. Jag har gått från deskriptiv statistik till prediktiv analys med en förklaringsvariabel. Emellanåt har det varit utmanande att finna tid till att skriva om statistiken och plugga, samtidigt som jag tagit hand om bebisar, tränat och programmerat. Men jag tycker att jag lärt mig mycket om statistik och jag har nu några idéer om hur jag skulle kunna tillämpa några av de kunskaper jag fått. Så här är några idéer:

  • Undersök korrelation mellan löptid och förlorad vätska. Min hypotes är att det finns ett positivt förhållande mellan hur länge jag springer och hur mycket vätska jag blir av med.
  • Undersök om jag har preferens för en särskild kategori böcker jämfört med andra. Jag behöver dock ett större läsunderlag klart innan jag kan påbörja detta. Jag tror att chi2-analys kan vara på sin plats då.
  • Sammanställ en beskrivning hur länge det tar att lägga upp en ny recension på Bokarenan innan en användare lägger upp en ny. Hur ser sambandet mellan detta och längden på den bok som recenseras.

Så även om jag är klar med statistikkursen så är jag inte klar med statistiken. Vi får se var det smyger sig in framöver. Men nu kommer jag flytta fokus tillbaka till programmering ett tag.

Förra måndagen skrev jag att jag skulle kolla på möjligheten att logga in med oauth (eller rättare sagt oauth2) till Bokarenan. Då skrev jag att jag eventuellt skulle titta på inloggning med Google-konto. Nu har jag kollat möjligheter och provat implementeringar och kan rapportera tillbaka.

Jag kom att prova med Facebook istället för Google och provade följande behjälpliga paket: knpuniversity/oauth2-client-bundle tillsammans med league/oauth2-facebook. Det jag fick göra var att skapa en controller för Facebook-inloggning och registrering samt en autentiserare för det också. Jag upplevde instruktionerna från knpuniversity/oauth2-client-bundle var enkla att följa och redigera för egna behov. Det krävdes att jag fick lägga till ytterligare autentiserare i min konfigurering (security.yaml) och att jag skrev vilken av dem som i första hand skulle användas:

        guard:
            authenticators:
                - App\Security\FacebookAuthenticator
                - App\Security\LoginFormAuthenticator
            entry_point: App\Security\LoginFormAuthenticator

Jag fick en till konfigureringsfil (knpu_oauth2_client.yaml) med instruktioner för autentisering:

knpu_oauth2_client:
    clients:
       
        facebook_main:

            type: facebook
            client_id: '%env(OAUTH_FACEBOOK_ID)%'
            client_secret: '%env(OAUTH_FACEBOOK_SECRET)%'

            redirect_route: connect_facebook_check
            redirect_params: {}
            graph_api_version: v2.12

Det denna konfigureringsfil innehåller är alltså vilken ”användare” och vilket ”lösenord” som ska användas gentemot Facebook för att få en ingång till oauth2 (så användare kan logga in med sina Facebook-användare). Informationen för det sparas i .env-filen. Sedan finns information om vilken funktion i controllern som kommer fånga upp inloggningen.

Det som jag tyckte var det svåraste var om en Facebook-användare behövde registreras som ny användare. Det jag gjorde då var att logga in användaren och sedan dirigera denna till avregistrering om denne inte vill gå med på användarvillkoren. Jag fick ta och registrera i sessionen (via autentiseraren) att användaren var ny och sedan kontrollera detta:

if ($this->session->get('fb-new')) {
    $targetUrl = $this->router->generate('connect_facebook_register');
    return new RedirectResponse($targetUrl);
}

Jag gillade slutresultatet. Det var jätteenkelt att logga in! Men jag har beslutat att för närvarande inte inkludera funktionen i produktion. Anledningen: jag är inte ett företag. Med det vill jag säga att det finns juridiska åtaganden att ta hänsyn till när det kommer till oauth2 och jag vill inte ta ansvar för Facebooks data om användare på min hobby-sida. Det kan vara så att jag överreagerar vad gäller detta och om så vore fallet så återinför jag funktionen.

Det som jag ska göra härnäst på Bokarenan är att införa en nyhetsblogg. Vi får se hur det går. Vi ses på onsdag!