我正在使用 Gigya 开发一个 Android 应用程序,以允许人们使用 Facebook 和 Twitter 进行注册;与此同时,另一位开发人员也在 iOS 中做同样的事情。我们要实现自定义登录 UI。
标准方法使用 Gigya 自己的 UI,并在此处记录:
http://developers.gigya.com/035_Mobile_SDKs/020_Android#Logging_in_the_User
下面,它只是建议:
如果您想自己实现图形设计,请改用登录方法。
标准登录方法使用方法调用专用的登录后回调,onLogin(...)
并且所有后续流程都被描述为源自此事件。另一种登录方法调用标准onGSResponse(...)
回调;目前尚不清楚如何使用响应来构造用户,因此我将实现设置为调用socialize.getUserInfo
. 尝试调用这两种方法都导致了许多异常错误。
根据我开始使用的 Gigya 说明
mGSAPI = new GSAPI(GIGYA_APP_KEY, this);
mGSAPI.setAPIDomain("eu1.gigya.com");
in onCreate(...)
(其中GIGYA_APP_KEY
是从我们的控制台复制的值)。我之所以调用 setAPIDomain,是因为我们遇到了无效的数据中心错误(尽管是 500001 代码,而不是 301001 代码!),这已解决。
Facebook 登录按照我的预期通过登录流程,然后返回错误 400093(文档告诉我这是一个无效的 API 参数,并显示消息“缺少参数:client_id”)。
Twitter登录返回206002,“Account Pending Verification”,这似乎是有道理的;然后我打电话
mGSAPI.sendRequest(
"getUserInfo",
null, //parameters
true, //use HTTPS
this, //the callback
null //a context object
);
这给了我错误:
缺少必需的参数:未提供秘密或签名。无法验证请求。
Web 应用程序需要建议 UID的文档socialize.getUserInfo
,但本机应用程序不需要。它没有提到其他必填字段。我有点卡住了......GSAPI
对象不应该处理验证,因为它是用 API 密钥初始化的吗?