E' molto difficile rispondere senza poter verificare passo per passo la costruzione della richiesta da inviare al server.

Inoltre, c'è anche l'uso del TIdSSLIOHandlerSocketOpenSSL di mezzo che complica ulteriormente le cose.

Innanzitutto, verificherei che i dati "postati" al server dalla versione Delphi siano gli stessi di quella PHP, in particolare il valore ottenuto dall'encoding in base 64, andando in debug su entrambe le soluzioni (o mostrando in qualche modo a video i valori).

Per esperienza personale, il protocollo OAuth può dare parecchi mal di pancia...
Quando avrò un attimo di tempo, controllerò meglio il codice che hai scritto.

Ciao!