[javascript] widget - google calendar

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
Momenteel ontwikkel ik een widget (Apple) waarbij je je google calendar kan beheren.
Concreet zal de widget in JavaScript de gebruiker inloggen adhv zijn ingevoerde gegevens. In de tweede stap zal ik met die login een xml feed ophalen (de eigenlijke calender) maar daar loopt het mis.

Hier is een stukje code die wordt opgeroepen om een calender op te halen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function makeAuthRequest() {
    alert('XML opvragen');
    
    try{
        xmlHttp2 = new XMLHttpRequest();
        xmlHttp2.onreadystatechange = outputTest;
        xmlHttp2.open("GET", "http://www.google.com/calendar/feeds/xxx%40gmail.com/private/full/aeg0hdrjtis0cfb4p2bmq42p2g",false);
        xmlHttp2.setRequestHeader("Authorization", "GoogleLogin auth=" + authToken);
        xmlHttp2.send();
    }
    
    catch (e){
        for(var i in e)
        alert(i + ': ' + e[i]);
    }
    
    if (xmlHttp2.readyState == 4){      //4 = operation complete
        return {
            responseText: xmlHttp2.responseText,
            responseXML: xmlHttp2.responseXML,
            status: xmlHttp2.status
        }
    }
}

function outputTest(){
    alert('Outputtest werkt');
    if (xmlHttp2.readyState == 4){
            alert(xmlHttp2.responseText + xmlHttp2.status + xmlHttp2.responseXML);

    }
}


So for so good maar ik krijg volgende uitvoer:

code:
1
2
3
4
XML opvragen
Outputtest werkt
Outputtest werkt
0null


Wanneer ik asynchroon werk (dus 3e parameter van de request op false zetten (default == true))
code:
1
2
3
4
5
6
7
8
9
10
11
12
XML opvragen
Outputtest werkt
Outputtest werkt
0null
line: 28
sourceId: 7801304
sourceURL: 
code: 101
message: NETWORK_ERR: XMLHttpRequest Exception 101
name: NETWORK_ERR
ABORT_ERR: 102
NETWORK_ERR: 101


Ik zit er al dagen op te zoeken en ik weet niet waarom het niet werkt. De code heeft correct gewerkt en de code om de user eerst in te loggen, die werkt: ook met xmlHttpRequest.

- Authtoken is correct, als ik daar iets wijzig krijg ik meteen error dat de login niet correct is.
- De url request is ook correct, als ik die in mijn browser paste wanneer ik ben ingelogd krijg ik mooi de feed.
- Bij mijn widget staat netwerktoegang op aan.

Ik hoop dat iemand mij kan helpen; alvast bedankt voor jullie tips en het lezen van dit bericht :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:20

MueR

Admin Tweakers Discord

is niet lief

Even zoeken op de foutmelding leverde dit linkje op: http://forums.macrumors.com/showthread.php?t=442059. Heb je hier wat aan?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
Dankje voor je reactie! Die link ben ik ook al tegengekomen en sluit perfect aan bij mijn probleem. Alleen staat er niet echt een oplossing in beschreven. De stappen die er in beschreven staan heb ik wel gedaan, zonder succes helaas :(

Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
Ik ben helaas nog geen stap verder. Iemand die mij kan helpen?

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Je weet dat je alleen requests kunt maken op het domein dat je je bevindt? Dat is gebeurd uit veiligheid, denk hier bijvoorbeeld aan XSS (cross-site scripting). Nu zijn er methoden om dit toch beschikbaar te maken. Zo kan er een methode/functie worden aangeroepen dat gedefinieerd wordt in een bestand dat op het domein *.google.com staat. Op deze manier kan er toch gebruik worden gemaakt van AJAX.

Zie ook: http://www.dreamincode.net/forums/index.php?showtopic=150959

Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
Bedankt Feanathiel voor je reactie. Is er geen andere manier om dat te omzeilen? Ik denk niet dat google blij gaat zijn wanneer ik hen voorstel om mijn scriptje op hun domein te hosten :) Bedankt alvast
ps. ik werk met google api protocol: http://code.google.com/in...opers_guide_protocol.html

[ Voor 23% gewijzigd door David19x op 16-03-2010 22:50 ]


Acties:
  • 0 Henk 'm!

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Je zou een tunnelscriptje op je eigen server kunnen neerzetten. Je XMLHttpRequest gaat dan naar je eigen server, je server doet de request bij Google en stuurt het resultaat door.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Waar ik eigenlijk op doelde is het gebruik van bv jQuery, waar websites zoals deze vaak gebruik van maakten. Nu heb ik zelf even gekeken naar de API en ik denk dat je hiermee wel verder moet komen:

http://code.google.com/in.../developers_guide_js.html

Dit doet precies waar ik het over had; er is een functie gedefinieerd in een javascript bestand op het domein van google zelf. Deze gebruik je in je eigen code, om het toch voor elkaar te krijgen wat je precies wilt.

Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
bedankt voor jullie reactie! Nu heb ik even geen tijd 8)7 maar ik test het morgen uit en laat weten of het werkt :)
Nogmaals bedankt!

Acties:
  • 0 Henk 'm!

  • David19x
  • Registratie: Juli 2006
  • Laatst online: 19-01 13:59
Heb de javascript api bekeken. Leuke en eenvoudige te gebruiken api helaas is hij voor mij nutteloos. Vooral omdat de API expliciet gebruik maakt van een een specifieke login:
The JavaScript client library uses the AuthSub authentication system
Dat houd in dat hij de gebruiker naar een webpagina van google stuurt, daar zal de gebruiker zich inloggen en dan wordt er terug gekeerd naar de JS die dan een cookie kan uitlezen.
Alleen maak ik in se geen webapplicatie maar een widget. Ik kan gebruikers dus niet doorsturen naar een webpage. laat staan een cookie uitlezen van een specifieke browser. Weet je nog alternatieven? ;(

Als ik gebruik maak van bv JQuery om XML op te halen (http://code.google.com/apis/ajaxlibs/documentation/#jquery)
Is het dan mogelijk om
1. de token mee te sturen zoals bij normale xmlhttprequest? xmlHttp.setRequestHeader("Authorization", "GoogleLogin auth=" + authToken);
2. geen problemen ivm NETWORK_ERR: XMLHttpRequest Exception 101

[ Voor 21% gewijzigd door David19x op 18-03-2010 15:50 ]


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Hmm, ik zie net dat jQuery ook weer vanaf een apart domein wordt gehaald (ajax.googleapis.com). Dat gaat dus ook niet veel helpen in dit geval. Je komt dan weer terug bij het begin; de foutmelding.

Nu kwam ik tijdens het zoeken hiervan terecht in de API. Daar wordt er gebruik gemaakt van de klasse CalendarService. Deze klasse 'extend' van GoogleService. Nu heeft deze klasse een methode met 'setUserCredentials' als methodenaam, waar een username, wachtwoord en een accountType kunnen worden ingevoerd. Misschien dat je daar wat mee kunt? Dan houdt het voor mij in ieder geval op. Ik heb zelf geen GoogleAPI sleutel, dus voor mij is het onmogelijk om dit soort zaken te testen. Succes hiermee!
Pagina: 1