2017-01-28 4 views
1

ich folgende bin die Dokumentation bei weebly zu konfigurieren-oauthjwt und weebly oAuth

Aber das Hinzufügen der: jwt zum manage_app_url funktioniert nicht. Das Token wird nie durch jwt ersetzt, es wird einfach wie gewohnt an das Ende angehängt - das Token bleibt auch als Teil der URL.

dh dies im manifest.json tun "manage_app_url":. "https://www.example.com/thepage.php?manage=yes&jwt=:jwt",

Returns: https://www.example.com/thepage.php?manage=yes&jwt=:jwt?thejwtstring Token nie ersetzt wird ...

Wer weiß, warum das, was die Dokumentation zu tun Sag nicht funktioniert? Was mache ich falsch?

Antwort

0

Bill, Sie haben recht, es ist ein Problem von weebly, so dass Sie es nicht beheben können. : jwt ersetzen, wenn jemand klickt auf Link vom App-Manager-Menü verwalten, aber es nicht gut ersetzen, wenn es von OAuth-Prozess kommt.

Ich konfrontiert das gleiche Problem vor ein paar Tagen und einfach entfernen: JWT und lassen Sie Weebly, um es am Ende der URL anhängen funktioniert für mich.

Ich hoffe, es funktioniert auch für Sie, ansonsten schlage ich vor, dass Sie dev Support von weebly bei dev-support @ weebly kontaktieren.com und melden Sie dieses Problem.

0

Ich zitiere von https://stackoverflow.com/a/40920748/3925032 aber beantworten hier, weil die Fragen nicht ganz die gleichen sind.

Sie brauchen nicht: jwt im Manifest. Auf der Seite Ihrer Website, die Sie für die manage_app_url festgelegt haben, würden Sie auf jwt warten, weil Sie, wie Sie es angemerkt haben, an sie angehängt werden.

* Sie können auch "oauth_final_destination": "manage" verwenden, wenn Sie möchten, dass sie nach der Installation auf Ihrer Site landen.

{ 
    "manifest": "1", 
    "version": "1.1.1", 
    "client_id" : "123456789101112", 
    "callback_url" : "https://www.your-domain.com/callback.php", 
    "scopes": ["read:site", "write:site"], 
    "manage_app_url": "https://www.your-domain.com/manage.php", 
    "oauth_final_destination" : "manage", 
    "locale": { 
    "default": "en-us", 
    "supported": ["en-us"] 
}, 
"webhooks": { 
    "callback_url": "https://www.your-domain.com/webhooks.php", 
    "events": ["app.uninstall", "site.publish", "site.delete"] 
}, 
"snippet": "files/assets/snippet.tpl" 
} 


Auf der manage_app_url Seite Ihrer Website würden Sie tun:

require('firebase/src/JWT.php'); 
use \Firebase\JWT\JWT; 

if (isset($_GET['jwt'])) { 
    $app_client_id = "Your APP ID"; 
    $client_secret = "Your APP SECRET"; 
    $jtw = $_GET['jwt']; 

    /** 
    * You can add a leeway to account for when there is a clock skew times between 
    * the signing and verifying servers. It is recommended that this leeway should not be bigger than a few minutes. 
    * Source: http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html#nbfDef 
    */ 

    try { 
     JWT::$leeway = 60; // $leeway in seconds 
     $decoded = JWT::decode($jtw, $client_secret, array('HS256')); 
     if (!empty($decoded)) { 
      $decoded_array = (array) $decoded; 
      // Continue with your websites code to verify the Weebly users info 
      // $decoded_array['user_id']; 
      // $decoded_array['site_id']; 
      // $decoded_array['iat']; 
      // $decoded_array['jti']; 
      // $decoded_array['callback_url']; 
     } 
    } //END TRY 
    catch (InvalidArgumentException $e) { 
     echo $e->getMessage(); 
    } 
    catch (UnexpectedValueException $e) { 
     echo $e->getMessage(); 
    } 
    catch (DomainException $e) { 
     echo $e->getMessage(); 
    } 
}// END IF ISSET JWT 
0

Leider verstehen Ihr nicht wirklich die Frage. Es kommt nicht darauf an, ob das: jwt benötigt wird, sondern dass es scheinbar nicht wie dokumentiert funktioniert.

Die Antwort auf dieses Problem ist: Es funktioniert nicht bei der Installation als Entwurfs-App, jedoch Zugriff auf den Link "App verwalten" über die App-Schnittstelle und es ist korrekt. dh, das: jwt wird durch die richtige URL ersetzt.

Also das Problem ist in der Installation eines Entwurfs-App, und nicht in der tatsächlichen Verwaltung der App durch die Front zugewandten Schnittstelle.

Die Dokumentation ist korrekt für das Endergebnis, aber nicht für die Installation als Entwurfs-App. Dies ist die eigentliche Dokumentation ....

HINWEIS: Weebly automatisch die JWT Zeichenfolge an das Ende der URL anhängt, einschließlich aller notwendigen Operanden (wie und &?). Wenn Sie möchten, dass der JWT in einen bestimmten Teil der URL gestellt wird, können Sie: jwt verwenden, und Weebly wird diesen durch den JWT ersetzen (ohne irgendwelche Operanden hinzuzufügen - Sie müssen diese hinzufügen).