Android 应用程序从 linkedin 访问令牌

2024-01-06

首先。是否可以使用 facebook、twitter 等 Android 应用程序添加 linkedin ?我读过很多博客,但无法在我的应用程序中实现 linkedin。我已达到应用程序的用户授权流程,用户输入其用户名和密码。但是当他输入 5 位数字时,屏幕上就会显示并告诉屏幕进入应用程序主屏幕。然后填写并按 Enter 键。

但问题是我如何从浏览器移回到我的应用程序以及用户应该将这些数字数据放在哪里。我何时以及如何获得访问令牌来使用用户配置文件的数据。

互联网上没有什么好东西可以用于 android 的 linkedin 。我有一个图书馆http://code.google.com/p/linkedin-j/ http://code.google.com/p/linkedin-j/但如何克服这种情况呢?不知道。谁能给我建议一些解决方案。谢谢。


您可以使用第三方 jar scribe.jar 来实现此目的。 调用webview Intent进行授权如下。

OAuthService service = new ServiceBuilder()
        .provider(LinkedInApi.class).apiKey(Constants.CONSUMER_KEY)
        .apiSecret(Constants.CONSUMER_SECRET)
        .callback(Constants.OAUTH_CALLBACK_URL).build();
 Token liToken = oAuthService
                .getRequestToken();

        String url = oAuthService
                .getAuthorizationUrl(PrepareRequestLinkedinTokenActivity.liToken);
        Log.i(TAG, "Popping a browser with the authorize URL : " + url);
        // Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(liToken
        // .getAuthorizationUrl()));
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
        context.startActivity(intent);

授权后,您将被重定向到您的活动。按如下方式检索您的活动中的访问令牌。

@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(this);
    final Uri uri = intent.getData();
    if (uri != null
            && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)) {
        Log.i(TAG, "Callback received : " + uri);
        Log.i(TAG, "Retrieving Access Token");
        new RetrieveAccessTokenTask(this, prefs).execute(uri);
        finish();
    }
}

public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Void> {

    private SharedPreferences prefs;

    public RetrieveAccessTokenTask(Context context, SharedPreferences prefs) {

        this.prefs = prefs;
    }

    /**
     * Retrieve the oauth_verifier, and store the oauth and
     * oauth_token_secret for future API calls.
     */
    @Override
    protected Void doInBackground(Uri... params) {
        final Uri uri = params[0];
        final Verifier verifier = new Verifier(
                uri.getQueryParameter("oauth_verifier"));

        try {
            accessToken = service.getAccessToken(liToken, verifier);

            final Editor edit = prefs.edit();
            edit.putString(Constants.LINKEDIN_TOKEN, accessToken.getToken());
            edit.putString(Constants.LINKEDIN_TOKEN_SECRET,
                    accessToken.getSecret());
            edit.commit();

            Log.i(TAG, "OAuth - Access Token Retrieved");

        } catch (Exception e) {
            Log.e(TAG, "OAuth - Access Token Retrieval Error", e);
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        super.onPostExecute(result);
        executeAfterAccessTokenRetrieval(accessToken);
    }

使用访问令牌,您可以按如下方式对 linkedin 进行网络更新。

private void postToLinkedin(String comment) {

    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(LinkedinDialogActivity.this);
    String token = prefs.getString(Constants.LINKEDIN_TOKEN, "");
    String secret = prefs.getString(Constants.LINKEDIN_TOKEN_SECRET, "");

    Token accessToken = new Token(token, secret);

    OAuthService service = new ServiceBuilder().provider(LinkedInApi.class)
            .apiKey(Constants.CONSUMER_KEY)
            .apiSecret(Constants.CONSUMER_SECRET)
            .callback(Constants.OAUTH_CALLBACK_URL).build();

    String url = "http://api.linkedin.com/v1/people/~/shares";
    OAuthRequest request = new OAuthRequest(Verb.POST, url);
    String payLoad = "<?xml version='1.0' encoding='UTF-8'?><share><comment>Check out the Sep 13 Second share!</comment><content><title>My new share with linked-in</title><description>Leverage the Share API to maximize engagement on user-generated content on LinkedIn</description><submitted-url>https://developer.linkedin.com/documents/share-api</submitted-url><submitted-image-url>http://m3.licdn.com/media/p/3/000/124/1a6/089a29a.png</submitted-image-url></content><visibility><code>anyone</code></visibility></share>";
    request.addHeader("Content-Length", Integer.toString(payLoad.length()));
    request.addHeader("Content-Type", "text/xml");
    request.addPayload(payLoad);
    service.signRequest(accessToken, request);
    Response response = request.send();
    System.out.println("response >>>> " + response.getBody());

}

该活动应在清单文件中声明如下。

<activity android:name=".PrepareRequestLinkedinTokenActivity"
        android:launchMode="singleTask" android:theme="@android:style/Theme.Translucent.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data android:host="callback" android:scheme="x-oauthflow-linkedin" />
        </intent-filter>
    </activity>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 应用程序从 linkedin 访问令牌 的相关文章

随机推荐

  • 在 RecyclerView 本身而不是项目上设置 OnClickListener

    我想设置一个OnClickListener on a RecyclerView 不在其物品上以便当用户点击时触发点击事件RecyclerView 即使它是空的或装满了物品 我正在使用MVVM I tried mRecyclerView se
  • 为与我们的服务器交互的 chrome 扩展实现 google oauth2

    想要什么 一个chrome扩展 它使用google ooauth2 0登录扩展 并使用访问令牌将他的操作数据安全地发送到我的服务器 我从访问令牌获取用户详细信息并保存他的操作 服务器在php中实现 我做了什么 使用重定向 URL 注册 Go
  • Active Admin 和 Apartment Gem

    我是 Active Admin 的新手 但从目前为止我所看到的情况来看 我认为这很容易实现 我有一个带有公寓宝石的应用程序来添加多租户 我正在向我的应用程序添加活动管理员 Apartment 使用 PostgreSQL 模式来隔离数据 例如
  • 是否可以阻止您的网站在另一个域的框架集和 IFrame 内运行?

    最近我们遇到了一个问题 其他网站在一个框架集中运行我们的电子商务网站 而我们的网站 附加了违规者附属 ID 是单个全宽框架中的唯一内容 所以本质上它看起来和感觉就像我们的网站 其 URL 位于顶部 我们可以切断他们的会员 ID 这会让他们这
  • Python tkinter PhotoImage 无法正常工作

    我正在尝试使用 tkinter 但这段代码不起作用 我想知道是否有人知道为什么 谢谢 from tkinter import window Tk window title tkinter stuff photo1 PhotoImage fi
  • 如何找出计划任务的下一次运行时间?

    在 ColdFusion 9 中 是否有一种快速方法可以找出计划任务下次尝试运行的时间 我宁愿调用较低级别的 API 等来让 CF 计算它 以与通常相同的方式 我已经放弃了各种服务 并没有看到任何明显的方法可以调用 这会有所帮助 AFAIK
  • 重写Subject.next方法

    我有以下代码 我想在其中覆盖next有一些自定义逻辑 这种方式行不通 但只有在以下情况下才有效next是一个带有箭头函数的属性 其背后的原因是什么 export class Store
  • 合并具有相似名称的列

    我有一个带有非常烦人的变量名的数据框 基本上我对同一变量的观察分布在变量 g1 param1 g2 param1 g3 param1 等中 我想将它们全部加入到 1 个名为 param1 的变量 列中 g1 param1 g2 param1
  • 谷歌地点 API 是免费的吗? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我想用谷歌地点 API在网络应用程序中 我只是想确认API是否免费 如果是付费功能那么收费是多少 您可以查看每个API的定价here
  • C# 应用程序在远程上总是冻结

    我正在开发一个 C 应用程序 Net 3 5 Win Forms 该应用程序在服务器上运行 并由用户使用远程桌面访问 应用程序在远程计算机上看似随机的情况下一直冻结 即所有 GUI 组件都变成白色 任务管理器报告应用程序没有响应 但在本地运
  • 如何通过邮递员发送graphql查询?

    I use POST type URL http graphql Body query query noteTypes name label labelColor groupName groupLabel imageUrl 但它返回 mes
  • SAPUI5 表达式绑定

    是否可以将控件属性绑定到具有动态属性名称的模型 例如存储在另一个模型字段中 我以为我们可以使用 SAPUI5表达式绑定 https sapui5 hana ondemand com docs guide daf6852a04b44d1189
  • 在 Android 中的 BOOT_COMPLETE 上,未从 AndroidManifest 调用 BroadcastReceiver

    在我的 Android 应用程序中 我想运行Service无需打开 运行我的应用程序 为此我延长了BroadcastReciever班级 但是这个BroadcastReceiver类未被调用AndroidManifest xml on BO
  • 使用 jquery 拖放

    我有两个基于 jquery 的列表 示例是here http devheart org examples jquery customizable layout using drag and drop 2 saving and loading
  • 在 C# 桌面应用程序中存储我的 Amazon 凭证

    我正在考虑在桌面应用程序中使用 Amazon S3 和 simpleDB 我遇到的主要问题是我需要将我的 aws 凭证存储在应用程序中或使用其他方案 我猜想将它们存储在应用程序中是不可能的 因为它们很容易被挑选出来 另一种选择是创建一个 W
  • 如何在 Angular.js 中解析 Int

    也许 这是最简单的事情 但我无法将字符串解析为角度中的 Int 我正在尝试做的事情
  • MISRA C++ 2008 规则 5-2-7 违规:具有指针类型的对象不得直接或间接转换为不相关的指针类型

    在以下示例中 void bad function char t ptr 0 MISRA doesn t complains here it allows cast of char to void pointer void p2 ptr th
  • Magento 产品使用 SQL 查询从数据库导入

    Magento 在其数据库系统中使用 EAV 结构 我有这个查询 它为我提供了我的 magento 商店中的产品 ID 和产品名称 SELECT e entity id AS product id var value AS product
  • 如何以 SVG 形式获取 matplotlib 图的输出?

    我需要获取 matplotlib 图的输出并将其转换为可以在激光切割机上使用的 SVG 路径 import matplotlib pyplot as plt import numpy as np x np arange 0 100 0 00
  • Android 应用程序从 linkedin 访问令牌

    首先 是否可以使用 facebook twitter 等 Android 应用程序添加 linkedin 我读过很多博客 但无法在我的应用程序中实现 linkedin 我已达到应用程序的用户授权流程 用户输入其用户名和密码 但是当他输入 5