login de vapor con openID en android
Iam nuevo al desarrollo androide. mi proyecto es hacer una aplicación usando API pública de vapor, pero no pude averiguar cómo permitir que el usuario de inicio de sesión con cuenta de vapor.
La documentación de la API de Steam en Internet afirma que debo usar openID, así que busqué mucho para encontrar un ejemplo implementando openID en una aplicación andorid, pero este es el único ejemplo que encontré y no funciona.
- ¿Por qué el método GoogleAuthUtil.getToken () genera dos tipos de tokens?
- ¿Es posible que una aplicación de Android utilice el servicio Open-ID?
- ¿Cómo evitar la "Acción completa con" emergente con devoluciones de llamada de OAuth de Google?
- Autenticación de Android con Google OpenID. ¿Qué sigue?
- OpenID para aplicaciones de Android que requieren
sólo quiero que el usuario haga clic en un botón de inicio de sesión que desencadena un webView donde el usuario puede iniciar sesión y luego obtener su ID de vapor de nuevo.
así que mi pregunta es
- ¿Hay una manera de implementar el inicio de sesión de openID en android?
- De no ser así, ¿de todos modos permitiría al usuario conectarse al Steam?
- Credenciales de Webservice - OpenID / Android AccountManager?
- OAuth / OpenID - ¿Qué debo usar?
- ¿Cómo hacer que AccountManager (authtoken) y OpenID trabajen juntos (sin AppEngine)?
- Aplicación para Android: ¿iniciar sesión con ID de google?
- Openid con una aplicación para Android
- Integre Google, Yahoo y OpenID en la aplicación Android?
- OpenId en Android
- Autenticación contra App Engine desde la aplicación de Android con inicio de sesión federado (OpenID)
Creo que he descubierto algún tipo de solución, supongo.
El steam openid se puede utilizar con una url request como esta:
https://steamcommunity.com/openid/login? openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select& openid.identity=http://specs.openid.net/auth/2.0/identifier_select& openid.mode=checkid_setup& openid.ns=http://specs.openid.net/auth/2.0& openid.realm=https://REALM_PARAM& openid.return_to=https://REALM_PARAM/signin/
donde REALM_PARAM es el sitio web que aparecerá en la pantalla de inicio de sesión. Además, el usuario será redirigido a ese sitio web una vez completada la autenticación, no tiene que existir realmente. Todo lo que tenía que hacer después de que se analizar la nueva url para el ID de usuario.
Así que he usado algo como esto
public class LoginActivity extends ActionBarActivity { // The string will appear to the user in the login screen // you can put your app's name final String REALM_PARAM = "YourAppName"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final WebView webView = new WebView(this); webView.getSettings().setJavaScriptEnabled(true); final Activity activity = this; webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { //checks the url being loaded setTitle(url); Uri Url = Uri.parse(url); if(Url.getAuthority().equals(REALM_PARAM.toLowerCase())){ // That means that authentication is finished and the url contains user's id. webView.stopLoading(); // Extracts user id. Uri userAccountUrl = Uri.parse(Url.getQueryParameter("openid.identity")); String userId = userAccountUrl.getLastPathSegment(); // Do whatever you want with the user's steam id }); setContentView(webView); // Constructing openid url request String url = "https://steamcommunity.com/openid/login?" + "openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&" + "openid.identity=http://specs.openid.net/auth/2.0/identifier_select&" + "openid.mode=checkid_setup&" + "openid.ns=http://specs.openid.net/auth/2.0&" + "openid.realm=https://" + REALM_PARAM + "&" + "openid.return_to=https://" + REALM_PARAM + "/signin/"; webView.loadUrl(url); } }