繁体   English   中英

Android Facebook API单点登录?

[英]Android Facebook API single sign-on?

我对Android Facebook API singleSignOn()方法有疑问。

下面的代码使用包“com.facebook.katana”和类“com.facebook.katana.proxyAuth”。

问题是我在Eclipse的安装中没有这样的软件包和类,但是使用这些软件包和类的活动似乎可以正常工作-即使我没有。 为什么?

这条线

activity.startActivityForResult(intent, activityCode);

即使我没有正确的程序包也不会引发ActivityNotFoundException错误?

代码在这里:

private boolean startSingleSignOn(Activity activity, String applicationId,
                                  String[] permissions, int activityCode) {
    boolean didSucceed = true;<br>
    Intent intent = new Intent();

    intent.setClassName("com.facebook.katana",
            "com.facebook.katana.ProxyAuth");
    intent.putExtra("client_id", applicationId);
    if (permissions.length > 0) {
        intent.putExtra("scope", TextUtils.join(",", permissions));
    }

    // Verify that the application whose package name is
    // com.facebook.katana.ProxyAuth has the expected 
    // Facebook app signature.
    if (!validateAppSignatureForIntent(activity, intent)) {
        Log.d("Facebook - startSignleSignOn", "AppSign Validation Failed, return didsucced false");
        return false;
    }

    mAuthActivity = activity;
    mAuthPermissions = permissions;
    mAuthActivityCode = activityCode;
    try {
        activity.startActivityForResult(intent, activityCode);
    } catch (ActivityNotFoundException e) {
        Log.d("Facebok - startSingleSignOn", "Activity not found exception, return didsucced false");
        didSucceed = false;
    }

    return didSucceed;
}

没关系。 我发现当代码无法找到“com.facebook.katana”包和“com.facebook.katana.ProxyAuth”类时,代码会自动使用webview Facebook授权。

我相信这些包和类都包含在Facebook应用程序中。 因此,如果我有包含“ com.facebook.katana.ProxyAuth”的Facebook官方应用程序,则我的应用程序使用SigleSignOn方法,该方法可在用户登录到Facebook官方应用程序时跳过我的应用程序的Facebook身份验证。 如果我没有Facebook官方应用程序,那么该应用程序使用传统的webview身份验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM