来自linkedin的Android应用程序访问令牌

Ran*_*a.S 5 android oauth linkedin

首先.是否有可能添加facebook应用程序,如Facebook,Twitter?我已经阅读了很多博客,但无法在我的应用程序中实现linkedin.我已经达到用户输入其用户名和密码的应用程序的用户授权过程.但是当他输入一个5位数的数字进入屏幕并且屏幕被告知到了应用程序主屏幕.然后填写并按Enter键.

但问题是我如何从浏览器移回我的应用程序以及用户应该放置此数值数据的位置.何时以及如何获取访问令牌以使用用户配置文件的数据.

在互联网上没有好的事情用于与android的linkedin.我有一个图书馆http://code.google.com/p/linkedin-j/但是如何克服情况?不知道.谁能建议我一些解决方案.谢谢.

Edd*_*y K 0

好的,几个小时前我遇到了同样的问题,这就是我解决它的方法:

public class WebFragment extends Fragment {

    class MyJavaScriptInterface
    {
        public void processHTML(String html)
        {
            Log.e("HTML" , html);
            ((MainActivity)getActivity()).LinkedInCallback(html);
        }
    }

    private WebView mWebView;
    private String mUrl = "http://www.google.com";
    boolean doneRedirect = false;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {


        LayoutInflater mInflater = (LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        RelativeLayout view =  (RelativeLayout) mInflater.inflate(R.layout.webview,null);

        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(1200, 700);
        lp.addRule(RelativeLayout.CENTER_IN_PARENT);

        view.setLayoutParams(lp);

        mWebView = (WebView) view.findViewById(R.id.wv1);
        mWebView.getSettings().setJavaScriptEnabled(true);

        mWebView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.e("Should Override url" , url);
                view.loadUrl(url);
                return false;
            }


              @Override
                public void onPageFinished(WebView view, String url)
                {
                  if(url.contains("submit"))
                      view.loadUrl("javascript:window.HTMLOUT.processHTML(document.getElementsByClassName('access-code')[0].innerHTML);");
                }

        });
        mWebView.loadUrl(mUrl);
        return view;
    }

    public void loadUrl(String url) {
        mWebView.loadUrl(url);
        Log.e("loadUrl", url);
    }

    public void setUrl(String url) {
        mUrl = url
        Log.e("setUrl", url);
    }

    public String getUrl() {
        return mUrl;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的活动方面,我有这些方法:

private void login() {

        new Thread(new Runnable() {

            public void run() {
                oAuthService  = LinkedInOAuthServiceFactory.getInstance().createLinkedInOAuthService( CONSUMER_KEY,  CONSUMER_SECRET);
                factory = LinkedInApiClientFactory.newInstance( CONSUMER_KEY,  CONSUMER_SECRET);

                liToken = oAuthService.getOAuthRequestToken();

                loginFragment(liToken.getAuthorizationUrl());
            }
        }).start();
    }

    private void loginFragment(String url) {


        mWebViewFragment.setUrl(url);
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.main_layout ,mWebViewFragment ,"webview");
        fragmentTransaction.addToBackStack("webview");
        fragmentTransaction.commit();

    }


    public void LinkedInCallback (final String VerifierCode)
    {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.remove(mWebViewFragment);
        fragmentTransaction.commit();

        new Thread(new Runnable() {

            public void run() {

                    String verifier = VerifierCode;
                    LinkedInAccessToken accessToken = oAuthService.getOAuthAccessToken(liToken, verifier);

            }
        }).start();

    }
Run Code Online (Sandbox Code Playgroud)

只是为了澄清:

我使用 webview 创建一个片段,当用户输入其凭据时,我检测到包含“submit”的重定向 url,并执行一些 JavaScript 注入来获取具有 oauth 验证程序的元素。然后,我关闭该片段并返回到我的活动并使用该 oauth 验证程序来使用客户端执行我需要的操作。