Register Members List Search Today's Posts Mark Forums Read

Reply
 
Thread Tools
  #1  
Old 31 Jul 2013, 17:27
daniel.castro daniel.castro is offline
 
Join Date: Jul 2013
API Single Sign On

I have seen numerous older posts regarding this topic with no satisfactory answers to my specific issue. I am attempting the age old problem of single sign on, as well as retrieving forum posts.

vBulletin 5 and 4 were released with a Mobile API.
http://www.vbulletin.com/vbcms/conte...34-mobile-api?

The API contains every method I need to integrate my existing site.
http://www.vbulletin.com/vbcms/conte...52-Method-List
http://www.vbulletin.com/vbcms/conte...elated-Methods

It appears the Mobile API does not work in vB5. I opened a ticket with vBulletin support and they claim because they do not have vB5 Mobile API documentation, they can not help me and to use vb4 instead. This is not acceptable and I have a phone call into their support right now. I had to leave a message because it would not put me in a queue for the next available person.

Anyhow, I have written a test application and have been able to call api_init, initiate a connection and receive the proper response per the API documentation for both vB5 and vB4.

My test application is a windows form application written in C#. My signature code is:

string signature = RequestParameters.GetRequestQueryString() + ApiAccessToken + ApiClientId + Secret + ApiKey;

MD5 md5Hasher = MD5.Create();

byte[] hash = md5Hasher.ComputeHash(Encoding.ASCII.GetBytes(signature));

return BitConverter.ToString(hash).Replace("-", "").ToLower();

For my test I am using the plain text password option so I know for a fact the username and password are correct.

In vB5, I simply get a The remote server returned an error: (404) Not Found. Almost as if the internal API is redirecting to a missing file.

In vB4, when I POST (as per the API docs) I receive invalid_api_signature, but with a GET I receive badlogin.

My setup is such:

vBulletin 5.0.3
vBulletin 4.2.1

Server Type WINNT
Web Server IIS v7 (cgi-fcgi)
PHP 5.3.24
MySQL Version 5.6.12

Can anyone out there help me? Has anyone ever been able to get the Mobile API to work in any version of vBulletin in any environment (php, java, c#, etc.)?


Thanks,

Dan
Reply With Quote
  #2  
Old 31 Jul 2013, 17:39
daniel.castro daniel.castro is offline
 
Join Date: Jul 2013
UPDATE: If the encoding of my POST parameters is ASCII, I receive invalid_api_signature. If the encoding is Unicode, I receive The remote server returned an error: (404) Not Found.

--------------- Added 31 Jul 2013 at 21:11 ---------------

UPDATE: vB4 authentication is working. Signature must include all parameters sent as url parameters except api_sig, api_c, api_s and api_v. During POST send in url and as post parameters.
Reply With Quote
  #3  
Old 18 Nov 2013, 06:20
magicwalker magicwalker is offline
 
Join Date: Nov 2013
I cannot find any documentation for API and did not explain well. Now my product stuck on because lack of support on vbulletin 5.05
- login
- login
- new user creation.......

I really don't know how to solve since the API documentation for 5.05 but claim good support on API.
Reply With Quote
  #4  
Old 11 Dec 2013, 12:52
bravura bravura is offline
 
Join Date: Dec 2013
Originally Posted by daniel.castro View Post
UPDATE: If the encoding of my POST parameters is ASCII, I receive invalid_api_signature. If the encoding is Unicode, I receive The remote server returned an error: (404) Not Found.

--------------- Added 31 Jul 2013 at 21:11 ---------------

UPDATE: vB4 authentication is working. Signature must include all parameters sent as url parameters except api_sig, api_c, api_s and api_v. During POST send in url and as post parameters.
Hello,

Can you please help me on creating the api_sig in vB4 using C#. I am getting this error: invalid_api_signature. I am using the below C# code

Code
=============

apiVersion = HttpUtility.UrlEncode(apiVersion);
apiAccessToken = HttpUtility.UrlEncode(apiAccessToken);
vBulletinVersion = HttpUtility.UrlEncode(vBulletinVersion);
apiClientId = HttpUtility.UrlEncode(apiClientId);
secret = HttpUtility.UrlEncode(secret);
apiKey = HttpUtility.UrlEncode(apiKey);

using(MD5 md5Hash = MD5.Create())
{
md5Password = GetMD5Hash(md5Hash, password);
}

string login_string = "api_m=login_login" + "&vb_login_username=" + userName + "&vb_login_md5password=" + md5Password;

using (MD5 md5Hash = MD5.Create())
{
api_sig = GetMD5Hash(md5Hash, login_string + apiAccessToken + apiClientId + secret + apiKey);
api_sig = HttpUtility.UrlEncode(api_sig);
}

String login_request = "vb_login_username=" + userName + "&vb_login_md5password=" + md5Password + "&cookieuser=true";

String request = "?api_c=" + apiClientId + "&api_v=" + apiVersion + "&api_m=login_login" + "&api_s=" + apiAccessToken + "&api_sig=" + api_sig;
url = url + request;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = login_request.Length;
CookieContainer a = new CookieContainer();
req.CookieContainer = a;
System.Net.ServicePointManager.Expect100Continue = false; // prevents 417 error
using (StreamWriter writer = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII))
{
writer.Write(login_request);
}

response = (HttpWebResponse)req.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
//cookie = reader.ReadToEnd();
JavaScriptSerializer js = new JavaScriptSerializer();
jsonResp = js.Deserialize<Dictionary<string, object>>(reader.ReadToEnd());
}




Thanks
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


New To Site? Need Help?

All times are GMT. The time now is 05:58.

Layout Options | Width: Wide Color: