Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Přihlašování na web pomocí sociálních sítí

Ahoj, v PHP dělám přihlašování přes sociální sítě google, facebook a microsoft. Používám nette a tyto knihovny:

guzzlehttp/guzzle
facebook/graph-sdk
google/apiclient
league/oauth2-client
microsoft/microsoft-graph

Na localu mi to dokonale funguje, ale dal jsem to na ostrý web a nejde ani jedno.

U google dostávám chybu při získávání dat usera (Google_Service_Oauth2->userinfo->get()):

Client error: `POST https://oauth2.googleapis.com/token` resulted in a `400 Bad Request` response: { "error": "invalid_grant", "error_description": "Bad Request" }

U Microsoftu dostávám chybu:

invalid_grant (AADSTS70000 The provided value for the 'code' parameter is not valid)

U facebooku nastane chyba když se snažím z short-lived access tokenu udělat long-life (->getLongLivedAccessToken($accessToken)):

This authorization code has been used

Jen u facebooku se mi přihlašování povedlo rozchodit, protože jsem zatím zrušil požadavek na long-life access token.

Začínám mít pocit, že je to nějaký problém na serveru, ale nevím jaký - php konfigurace je +- stejná, jen já používám php 7.1 a na webu je php 5.6. Pak jsem na webu našel radu, že to může být špatně nastaveným časem na serveru - porovnal jsem to a ostrý server je cca 10 sekund pozadu.

Už jsem na jednom projektu přihlašování dělal (funguje pár let bez problémů) a vlastně jsem převzal ten kod a jen udělal novou konfiguraci (api klíče secret apod)

Už jsem docela zoufalý, nevím co s tím a v pondělí se to má spouštět.

Moc děkuji za radu

Předmět Autor Datum
Porovnal bych výpisy phpinfo(), což jsi asi udělal a otestoval skript někde na serveru s PHP 7.x, př… nový
host 18.11.2020 22:31
host
Ahoj, je to hostované u jedné firmy co nám i dělá správu sítě, vpn apod... upgrade teď asi není možn… nový
n.u.r.v. 18.11.2020 22:42
n.u.r.v.
Tak jsem prošel phpinfo() a je +- stejné - sice chybí pár modulů, ale myslím že nemají vliv. Dále j… nový
n.u.r.v. 19.11.2020 10:27
n.u.r.v.
A ten čas jsi teda srovnal? nový
Wikan 19.11.2020 10:55
Wikan
nn, sice je o 10 sekund pozadu oproti localu, ale teď jsem zjistil, že je stejně jako na tom starším… nový
n.u.r.v. 19.11.2020 11:31
n.u.r.v.
Přece jen zkus srovnat ten čas. Tady to prý pomohlo: PHP Fatal error: Uncaught GuzzleHttp\Exception… nový
hynajs 20.11.2020 08:40
hynajs
No asi to způsobil provozovatel serveru - den předem jsem je žádal o zapnutí PHP EXIF. To zapnuli. D… poslední
n.u.r.v. 20.11.2020 09:11
n.u.r.v.

Porovnal bych výpisy phpinfo(), což jsi asi udělal a otestoval skript někde na serveru s PHP 7.x, případně rovnou upgradoval. To je tvůj server nebo webhosting? Těch 10 sekund zpoždění IMHO nehraje roli. Ještě mě napadlo, jestli není problém s nastavením práv?

Ahoj, je to hostované u jedné firmy co nám i dělá správu sítě, vpn apod... upgrade teď asi není možný - nesmí se stát výpadek a moc se mi do toho nechce šťourat - je to v plánu, ale až na to bude klid... Vím ale že verzí php to nebude - první projekt oc jsem dělala a funguje, tak taky běží na php 5.6

Zkusím ten čistý skript. A pak porovnám phpinfo(). Ale určitě to bude něco na serveru, když na localu to funguje... Skoro si myslím, jestli se nějak nepoškodí/špatně dekoduje token z url...

Tak jsem prošel phpinfo() a je +- stejné - sice chybí pár modulů, ale myslím že nemají vliv.

Dále jsem zkusil dát čistou testovací aplikaci na web a ta samá chyba, něco to bude na serveru.

Posílám přesný výpis chyby

Fatal error: Uncaught exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `POST https://oauth2.googleapis.com/token` resulted in a `400 Bad Request` response: { "error": "invalid_grant", "error_description": "Bad Request" } ' in /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:113 Stack trace: #0 /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/guzzle/src/Middleware.php(65): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/promises/src/Promise.php(204): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/promises/src/Promise.php(153): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/promises/src/TaskQueue.php(48): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #4 /var/www/[VYMAZANY_NAZEV_SLOZKY]/ in /var/www/[VYMAZANY_NAZEV_SLOZKY]/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php on line 113

No asi to způsobil provozovatel serveru - den předem jsem je žádal o zapnutí PHP EXIF. To zapnuli. Druhý den jsem zjistil ten problém s přihlašováním + se objevil problém s odesíláním emailů (což jsem zjistil až později, problém se ssl). Nakonec jsem napsal jsem na help desk a zda to vše nesouvisí s tou instalací PHP EXIF. Za cca 2 hodiny byla odpověď že určitě ne, jen že při té instalaci aktualizovali ještě nějaké moduly. A chvilku na to začalo vše fungovat...

No a dnes dokonce z help desku zmizel ten můj dotaz...

Takže prostě něco pokopali u poskytovatele a nepřiznali to... Snad to už bude fungovat bez problémů....

Zpět do poradny Odpovědět na původní otázku Nahoru