Member 13951757 Ответов: 0

Как открыть страницу авторизации входа в приложение Facebook с помощью ручного потока входа


Мне нужно открыть страницу авторизации входа в приложение facebook без SDK для Facebook. Я попробовал этот метод с самого начала. здесь но он открывает страницу входа в систему в браузере/WebView.Я также попробовал этот метод от здесь но я получаю ошибку с ним ("требуется параметр redirect_uri"), хотя мой redirect_uri работает нормально. Я проверил это. Есть ли способ открыть страницу входа в приложение Facebook, установленное на устройстве? Мой код находится ниже:

Что я уже пробовал:

public class MainActivity extends AppCompatActivity {


private final String clientId = "XXXXXXXXXXXXXXXX";
private final String responseType = "code";

private final String redirectUri = "https://waheedabbax.app.link/3LJBUFVfqP";
public String FACEBOOK_PAGE_ID = "https://www.facebook.com/v3.1" + "/dialog/oauth" +
        "?client_id=" + clientId  +
        "&redirect_uri=" + redirectUri +
        "&response_type=" + responseType;

public String FACEBOOK_URL = "https://www.facebook.com/v3.1" + "/dialog/oauth" +
        "?client_id=" + clientId +
        "&redirect_uri=" + redirectUri +
        "&response_type=" + responseType;

/**
 * same as in manifest in intent filter
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Initialize the Branch object
    Branch.getAutoInstance(this);

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.waheed.facebooklogin",  // replace with your unique package name
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

    Button loginButton = (Button) findViewById(R.id.loginbutton);
    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              /*  Intent intent = new Intent(
                        Intent.ACTION_VIEW,
                        Uri.parse("https://m.facebook.com/v3.1" + "/dialog/oauth" +
                                "?client_id=" + clientId + "&display=popup"+
                                "&redirect_uri=" + redirectUri +
                                "&response_type=" + responseType));
                startActivity(intent);*/
            Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
            String facebookUrl = getFacebookPageURL(getApplicationContext());
            Log.d("com.waheed",facebookUrl);
            facebookIntent.setData(Uri.parse(facebookUrl));
            startActivity(facebookIntent);

        }
    });
}

@Override
protected void onResume() {
    super.onResume();

    // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent
    Uri uri = getIntent().getData();
    if (uri != null && uri.toString().startsWith(redirectUri)) {
        // use the parameter your API exposes for the code (mostly it's "code")
        String code = uri.getQueryParameter("code");
        if (code != null) {
            Log.i("code", code);
            // get access token
            // we'll do that in a minute
        } else if (uri.getQueryParameter("error") != null) {
            // show an error message here
        }
    }
}

//method to get the right URL to use in the intent
public String getFacebookPageURL(Context context) {
    PackageManager packageManager = context.getPackageManager();
    try {
        int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
        if (versionCode >= 3002850) { //newer versions of fb app
            return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
        } else { //older versions of fb app
            return "fb://page/" + FACEBOOK_PAGE_ID;
        }
    } catch (PackageManager.NameNotFoundException e) {
        return FACEBOOK_URL; //normal web url
    }
}

Gerry Schmitz

"Я не хочу использовать SDK"?

Ни у кого нет на это времени.

Member 13951757

Facebook SDK увеличивает размер моего приложения, поэтому я избегаю его.

Richard MacCutchan

Используйте Facebook SDK, вот для чего он был создан.

0 Ответов