Thanks for made this great module.

I'm writing some app that need connect from javascript to my XML-RPC Server. I'm not familiar with
old and new version of Service, but in this version I'm not figure out how to handle session (and keep). For test, I'm connect
from php right now, and later I will implement javascript.

For example:

1. I'm calling user.login and this return an array with user data and session_name and sessid, this is ok.

2. In next step I call for example node.create but, Service return access denied because no session is using (anonymous)

3. I found only one reference about this and that include using "Cookie" parameter in request

$options['headers']['Cookie'] = $response['session_name'] . '=' . $response['sessid'];

I make this work and node is created correctly, but my question is if this is the only way to set session or I'm missing something?. I ask this because In the next time I will try to connect from and Javascript script using one xml-rpc library, so I think set cookie will be a bit hard.

I am grateful for your help

Additional info:

a. I'm using xml-rpc library provided by Drupal core (include_once DRUPAL_ROOT . '/includes/xmlrpc.inc')
b. Authentication is set to "Session authentication" in Services Edit Settings

CommentFileSizeAuthor
#3 1.png112.02 KBcybershan
#3 2.png85.18 KBcybershan

Comments

neo_busteni’s picture

Hi,

I am having the same problem but I don't know how to pass the cookies from user.login step to node.save step.
Can you please help me?
Thank you.

dariogcode’s picture

You should use _xmlrpc() function from xmlrpc.inc file

$options['headers']['Cookie'] = $response['session_name'] . '=' . $response['sessid'];
_xmlrpc('http://www.example.com/api/xml-rpc', array('node.save' => $args), $options);
cybershan’s picture

StatusFileSize
new85.18 KB
new112.02 KB

Hello,

I am having the same problem, when I post user.login, it works. But when I post node.create, it shows the 401 unauthorized access denied for user admin.

ss

ss

dariogcode’s picture

Are you using same sesname=sesvalue from first response in second request? "Header parameters" may help. Your first request node.login will return a sessname=sessvalue you should use in second request.

Also, is your admin user = 1 or and admin role with correct permission for create nodes?

cybershan’s picture

I turn on the " Session authentication" in services config.

in the header, I input the sessid and session_name (name and value from user.login , fyi below), but still not work.

<?xml version="1.0"?>

<methodResponse>
  <params>
  <param>
    <value><struct>
  <member><name>sessid</name><value><string>JPbvktUZ_J-4276vpmSW8o-4oMAd_5Ksg-Tv9mfueiw</string></value></member>
  <member><name>session_name</name><value><string>SESS561611f275b46b36e26ae16f26dcebde</string></value></member>
  <member><name>user</name><value><struct>
  <member><name>uid</name><value><string>1</string></value></member>
  <member><name>name</name><value><string>administrator</string></value></member>
  <member><name>mail</name><value><string>sam.guo@qq.com</string></value></member>
  <member><name>theme</name><value><string></string></value></member>
  <member><name>signature</name><value><string></string></value></member>
  <member><name>signature_format</name><value><string></string></value></member>
  <member><name>created</name><value><string>1319306972</string></value></member>
  <member><name>access</name><value><string>1319602343</string></value></member>
  <member><name>login</name><value><int>1319602665</int></value></member>
  <member><name>status</name><value><string>1</string></value></member>
  <member><name>timezone</name><value><string></string></value></member>
  <member><name>language</name><value><string></string></value></member>
  <member><name>picture</name><value><string></string></value></member>
  <member><name>init</name><value><string>abc@fdsa.com</string></value></member>
  <member><name>data</name><value><boolean>0</boolean></value></member>
  <member><name>roles</name><value><struct>
  <member><name>2</name><value><string>authenticated user</string></value></member>
  <member><name>3</name><value><string>administrator</string></value></member>
</struct></value></member>
  <member><name>field_migrate_example_gender</name><value><array><data>
</data></array></value></member>
  <member><name>rdf_mapping</name><value><struct>
  <member><name>rdftype</name><value><array><data>
  <value><string>sioc:UserAccount</string></value>
</data></array></value></member>
  <member><name>name</name><value><struct>
  <member><name>predicates</name><value><array><data>
  <value><string>foaf:name</string></value>
</data></array></value></member>
</struct></value></member>
  <member><name>homepage</name><value><struct>
  <member><name>predicates</name><value><array><data>
  <value><string>foaf:page</string></value>
</data></array></value></member>
  <member><name>type</name><value><string>rel</string></value></member>
</struct></value></member>
</struct></value></member>
</struct></value></member>
</struct></value>
  </param>
  </params>
</methodResponse>


kylebrowning’s picture

Status: Active » Closed (fixed)