FunBeats API
FunBeat API låter dig som utvecklare koppla dina program och plugins direkt till FunBeat. APIet är under ständig utveckling och för att ha maximal koll på den bör du återkomma till den här sidan med jämna mellanrum. För att ha nytta av APIet behöver du ha grundläggande kunskaper i programmering, känna till någon av de interfacemöjligheter som erbjuds av APIt och förstås ha ett konto på FunBeat.
OBS! För att en FunBeat-medlem ska kunna använda ett program/app som kopplar upp sig via FunBeats API krävs att personen har Premium-medlemsskap. Premium-medlemsskapet lanseras månadsskiftet april/maj 2011.
Diskutera
Villkor
- Gör inga onödiga anrop.
- Spamma aldrig
- Det måste framgå tydligt att Programmet är fristående från FunBeat.
- Använd gärna FunBeats logga, men Programmet får inte ha FunBeats logga som sin egen logga eller som programikon.
- Programmets får inte har ordet FunBeat i sig. Anledningen till detta är att det är viktigt att användare av programmet inte tror att programmet är utvecklat och underhållet av FunBeat. Självklart bör du dock beskriva att programmet kopplar till FunBeat.
- Gör inget olagligt, använd sunt förnuft och ha hedern i behåll.
- Meddela oss gärna på info@funbeat.se när Programmet är på plats så att vi kan kolla in den.
- Respektera FunBeat-medlemmarnas integritet och privatliv
Beskrivning
- Läs igenom punktlistan med villkor ovan.
- Kolla in metodbeskrivningarna här: http://api.funbeat.se (det är en web service som hanterar SOAP och JSON. Sätt ResponseType till "application/json" för json). URL för respektive metod blir vid anropen exempelvis http://api.funbeat.se/Default.asmx/GetTrainingTypes.
- Maila info@funbeat.se och be om en API-nyckel. Berätta också i en mening eller två vad du tänker bygga. Du kommer att få en API-nyckel och en hemlig API-nyckel.
- Det första anropet som måste ske när en användare ska logga in mot FunBeat från din app är ValidateAndCreateSecrets. Den metoden förväntar sig API-nyckel, ett inloggningsnamn (samma som används för att logga in på FunBeat), samt ett lösenord som är "hashat" (envägskrypterat) med algoritmen SHA1. Se exempel EncryptPassword nedan.
- Om anropet till ValidateAndCreateSecrets var korrekt kommer du få tillbaka ett objekt som innehåller information om den inloggade samt LoginID och LoginSecret. LoginID ska skickas med till samtliga efterföljande anrop. LoginSecret ska hashas/envägskrypteras med den hemliga API-nyckeln som du fått. Algoritmen som ska användas är HMACSHA1. Se nedan för exempel (HashLoginSecret).
- OBS! Det är inte meningen att ValidateAndCreateSecrets ska anropas varje gång användaren startar din app. Istället ska det ske 1 gång varpå LoginID + hashad LoginSecret sparas i appen (persistent) och hämtas upp vid varje anrop av andra metoder.
- En del anrop frågar efter LanguageCode. Ange då "sv-SE".
Hash-algoritmer
Följande exempel är skrivna i C#. Alla stora utvecklingsmiljöer innehåller programbibliotek för att genomföra samma operationer.
Exempel på hur lösenorden kan envägskrypteras innan de skickas till metoden ValidateAndCreateSecrets.
Testa med lösenordet "mypassword", om du gjort rätt ska du få resultatet "91DFD9DDB4198AFFC5C194CD8CE6D338FDE470E2".
public static string EncryptPassword(string password)
{
System.Security.Cryptography.SHA1CryptoServiceProvider crypto = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] hashedPassword = crypto.ComputeHash(System.Text.ASCIIEncoding.UTF8.GetBytes(password));
string result = "";
foreach(byte b in hashedPassword)
result += ((int)b).ToString("X2");
return result;
}
Exempel på hur LoginSecret ska envägskrypteras med din hemliga API-nyckel. Exempel på hur en krypterad loginsecret kan se ut: UAcZ2yprsE2ptavioKgGCV5RMQs=
public static string HashLoginSecret(string key, string message)
{
HMACSHA1 hashAlgorithm = new HMACSHA1();
hashAlgorithm.Key = Encoding.ASCII.GetBytes(key);
byte[] bytes = Encoding.ASCII.GetBytes(message);
byte[] hashedBytes = hashAlgorithm.ComputeHash(bytes);
return Convert.ToBase64String(hashedBytes);
}