Shindig opensocial with shindigintegrator has getAppId() always returning 0. Use $appId instead but this is a security hole because the server can use any appId it wants. That will not be acceptable if the container hosts more than one application. Theory about the reason why the following patch is needed: The current implementation use a x509 certificate to sign the request forwarded by the container to the poker server (makeRequest). This signature method does not create a oauth_token (which is the token supposed to contain the application id). When the poker server sends an RPC/REST request to update the appdata, it does not set the oauth_token because it does not have it in the first place and the container is therefore unable to retrieve any information from it. diff -r 21fd6672a670 usr/src/ShindigIntegrator/shindig_integrator/shindig/php/src/social/sample/ShindigIntegratorAppDataService.php --- a/usr/src/ShindigIntegrator/shindig_integrator/shindig/php/src/social/sample/ShindigIntegratorAppDataService.php Thu Nov 19 12:14:12 2009 +0100 +++ b/usr/src/ShindigIntegrator/shindig_integrator/shindig/php/src/social/sample/ShindigIntegratorAppDataService.php Thu Nov 19 19:44:55 2009 +0100 @@ -65,7 +65,7 @@ $ids = ShindigIntegratorDbFetcher::get()->getIdSet($userId, $groupId, $token); $data = ShindigIntegratorDbFetcher::get()->getAppData($ids, $fields, $appId); if (!count($data)) { - throw new SocialSpiException("Data Not Found".print_r($appId, true), ResponseError::$NOT_FOUND); + throw new SocialSpiException("Data Not Found (ids = ".print_r($ids, true).") (app_id = ".print_r($appId, true).") (fields =".print_r($values, true).")", ResponseError::$NOT_FOUND); } return new DataCollection($data); } @@ -97,7 +97,7 @@ case 'self': foreach ($fields as $key) { $value = isset($values[$key]) ? $values[$key] : null; - if (! ShindigIntegratorDbFetcher::get()->setAppData($userId->getUserId($token), $key, $value, $token->getAppId())) { + if (! ShindigIntegratorDbFetcher::get()->setAppData($userId->getUserId($token), $key, $value, $appId)) { throw new SocialSpiException("Internal server error", ResponseError::$INTERNAL_ERROR); } }