Парольный вход с использованием openID в android

Iam новое для разработки Android. мой проект заключается в том, чтобы сделать приложение, используя открытый API, но я не мог понять, как разрешить пользователю входить в систему с использованием паровой учетной записи.

Документация API веб-интерфейса гласит, что я должен использовать openID, поэтому я искал alot, чтобы найти пример реализации openID в приложении andorid, но this является единственным примером я и он не работает, webView просто получается пустым.

Я просто хочу, чтобы пользователь нажал кнопку входа в систему, которая запускает webView, где он может войти в систему, а затем вернуть свой идентификатор пара.

поэтому мой вопрос

  • Есть ли способ реализовать openID для входа в android?
  • Если нет, есть ли способ разрешить пользователю войти в пар?

Ответы

Ответ 1

Я думаю, что обнаружил какое-то обходное решение, которое я предполагаю.

Паровой openid можно использовать с запросом 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/

где REALM_PARAM - это веб-сайт, который появится на экране входа в систему. Также пользователь будет перенаправлен на этот веб-сайт после завершения проверки подлинности, он фактически не существует. Все, что вам нужно было сделать после этого, проанализировать новый URL-адрес для идентификатора пользователя.

Итак, я использовал что-то вроде этого

public class LoginActivity extends ActionBarActivity {

    // The string will appear to the user in the login screen  
    // you can put your app 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 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 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);

            }
        }