liboauth Problem



  • Hallo zusammen,

    ich habe eine Anwendung, welche bisher über festcodierte URLs und Curl Daten mit einer Webanwendung austauscht. Nun will ich das ganze über libOauth machen. Allerdings bekomme ich da andere Ergebnisse, als ich es mit Hand gemacht habe und kann diese auch nicht ganz nachvollziehen. Mit den anderen Ergebnissen kann ich mich aber leider nicht erfolgreich bei der Webanwendung anmelden. Vielleicht hat der ein oder andere ja mal einen Tip.

    Ich bekomme als Fehler:

    {"error": "Bad oauth_signature for oauth_signature_method 'PLAINTEXT'"}
    

    Ich signiere die URL wie folgt:

    char* signedUrl = oauth_sign_url2(url.c_str(), //request url
                                                  NULL, //post arguments
                                                  OA_PLAINTEXT, //oauth method OA_HMAC
                                                  NULL, //http method (GET or POST), if NULL - auto detection
                                                  APP_KEY.c_str(), //c_key
                                                  APP_SECRET.c_str(), //c_secret
                                                  OAUTH_TOKEN.c_str(), // t_key
                                                  OAUTH_TOKEN_SECRET.c_str()); //t_secret
    

    Ich bekomme als signierte URL:

    https://EINE_WWW_URL_MIT_PATH_UND_FILE_UND_SO?
    oauth_consumer_key=[..]&
    oauth_nonce=[..]&
    oauth_signature_method=PLAINTEXT&
    oauth_timestamp=1341253176&
    oauth_token=[..]&
    oauth_version=1.0&
    overwrite=false&
    oauth_signature=[APP_SECRET]%2526[OAUTH_TOKEN_SECRET]
    

    Ich glaube das Problem liegt hier:

    [APP_SECRET]%2526[OAUTH_TOKEN_SECRET]
    

    mit der Kombination %2526. Als ich die Signatur per Hand zusammengebaut habe, habe ich sie so erstellt:

    [APP_SECRET]%26[OAUTH_TOKEN_SECRET]
    

    Da ging es dann. Sonst ist nur noch der Timestamp und die Nounce anders, aber dies ist wohl normal. Jemand nen Tip für mich??? Ich versteh echt nicht, wo das herkommt.

    Vielen Dank.



  • D.h. hier soll jemand deine verwendete Lib-Funktion in deiner von dir nicht beschriebenen Umgebung innerhalb deines nicht beschriebenen Programmaufrufes analysieren?



  • hallo wutz,

    also so unklar finde ich das setting nicht. es ist eine standard c lib (ich glaube die einzige C/C++ oauth lib), welche ich wie beschrieben aufrufe. ist doch wie ein printf der fehl schlägt. ich beschreibe gern mehr details, wenn ich auch nicht sehe, welche gebraucht werden? die lib funktioniert ja. es ist also keine umgebungssache. sie "arbeitet" ja auch fast richtig, nur ein teil der antwort ist falsch. der rest stimmt. was soll es das helfen wenn ich sage wie ich die lib einbinde? versteh ich gerade wirklich nicht. sorry.

    ansonsten teste ich das problem in einer kleiner hello world anwendung. also keine externen abhängigkeiten. nur main -> methodenaufruf, ausgabe. mehr ist es nicht. ich würde ja behaupten die lib enocdiert doppelt, da "&" der gültige trenner in der signatur ist und "&" encodiert %26 ergibt, und "%" encodiert %25. aber kann dies sein?

    gruß



  • - oauth ist keine 'standard c lib'
    - .c_str() legt nahe, dass du mit C++ arbeitest, da gibt es natürlich einiges zu beachten, wenn man plain C Libs einbinden will
    - evtl. liegt doch ein Umgebungsproblem (Stringencoding/Unicode/Sprache) vor

    also ich kann hier wie gesagt nichts analysieren



  • Hallo Wutz,

    vielen Dank für deine Antwort. Also das Standard Lib bezog sich mehr auf OAuth, da wie gesagt liboauth die einzige lib für OAuth unter C/C++ zu sein scheint. Wenn man nach so etwas sucht und die Leute es nicht selber machen, dann kommt man zu liboauth. Ich nutze in der Tat C++. Da muß ich mal doof fragen, was kann da schief gehen, wenn ich plain C Libs in C++ einbinde?

    Ein Umgebungsproblem ist es nicht, da alle Strings fest kodiert sind, und wie ich es sagte, das Ergebnis stimmt, bis auf den letzten Teil (also 90% sind richtig). Wäre es ein Umgebungsproblem bzgl. Codierung würde der Fehler auch in den anderen Teilen auftreten. In der Zwischenzeit habe ich aber vom Entwickler der Lib bestätigt bekommen, dass dies in der Tat ein Bug ist. Von daher Thema erledigt.

    Vielen Dank dennoch für die Unterstützung.

    Gruß
    uwe


Log in to reply