为什么我无法使用Linkedin android sdk登录?

时间:2015-07-14 07:43:37

标签: android linkedin

我尝试使用LinkedIn sdk登录,但它没有用。 我有一个按钮,我写入onClick方法:

if (view.getId() == btnLinkedinLogin.getId()){
        LISessionManager.getInstance(getActivity()).init(getActivity(), Scope.build(Scope.R_FULLPROFILE), new AuthListener() {
            @Override
            public void onAuthSuccess() {
                Log.d(TAG, "succesful linkedin login");
                ((MainActivity)getActivity()).showFragment("Tile");
            }

            @Override
            public void onAuthError(LIAuthError error) {
                Log.d(TAG, "failed linkedin login. Error: " + error.toString());
            }
        }, false);
    }

我重写onActivityResult方法,如下所示:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    LISessionManager.getInstance(getActivity().getApplicationContext()).onActivityResult(getActivity(), requestCode, resultCode, data);
   // super.onActivityResult(requestCode, resultCode, data);
}

但是,如果我运行我的应用程序并单击登录按钮,则会显示linkedin徽标,但在隐藏它之后,我的应用程序不会调用AuthListener方法......

我已经创建了我的linkedin应用并设置了包名和哈希值。

我在日志中看到: 请求为https://www.linkedin.com/uas/mobilesdk/authorize scope = r_fullprofile& duid = 5770a1bf-2567-4fd1-9358-b762856df6d3& packageName = com.beee& packageHash = 8dRCxNsk3LZTTd11iJmoiYaCpIA%3D& csrfToken = ajax%3A1829388572167379991& userAuthorized = false

更新: 我检查了我的linkedin个人资料,我在个人资料中看到了我的linkedin申请。如果我删除了这个,并尝试再次登录,现在我看到了应用程序需要提交的屏幕,但是在它没有调用任何方法之后......

3 个答案:

答案 0 :(得分:1)

看起来SDK似乎不支持来自Fragment的调用(我假设你正在调用getActivity())。我遇到了同样的问题,不得不使用监听器接口解决它并让父活动调用LISessionManager.init()。

您还可以将这段代码添加到onActivityResult()方法中,以便读取结果的内容,这可能有助于确定您的请求是否遇到错误。

@Override
public void onActivityResult(
    int requestCode,
    int resultCode,
    Intent data
) {
        Bundle bundle = data.getExtras();
        Set<String> setKeys = bundle.keySet();
        for (String sKey : setKeys) {
            Log.d(
                TAG, String.format("Extra: (%s:%s)", sKey, bundle.get(sKey).toString()
            );
        }
        // Rest of your code
}

答案 1 :(得分:1)

发现,LinkedIn sdk的onActivityResult触发了父活动,而不是片段onActivityResult。因此,您必须将以下代码写入父活动的onActivityResult中,以触发片段的onActivityResult

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    yourFragment.onActivityResult(requestCode, resultCode, data);
}

答案 2 :(得分:0)

我也遇到了同样的问题,然后我在Activity上的片段中替换了我的代码,问题就解决了。