Twitter登录和分享

来源:互联网 发布:淘宝 市场份额 编辑:程序博客网 时间:2024/09/21 09:03

最近正在熟悉公司的项目,因为是国际项目,所以用到了google,facebook,Twitter等登录和分享。这里,写几个博客,总结一下,和记录一下。内容的来源,主要还是来自官网,然后我翻译过来的。

因为是国际项目,所有官网的内容,都需要翻墙,才能看到


推特开发者:

https://dev.twitter.com/products


推特的开发者服务,包含四大类:

1,发布平台Publisher platform.

1,推特一键分享Twitter buttons

2,推特卡片Twitter Cards  --- 用来展示信息,图片,应用链接,内联视频。

3,Twitter Kit 用来在自己的应用中在线聊天,实际的功能比较多。

TwitterKit是ios和android客户端使用推特,进行推特授权(三方登录)和推特API的工具箱

功能列表:

方便使用,在应用里打开具有交互的推特和时间线。

在原生views打开原生的推特,获取数据集合,配置信息和动态的搜索信息。

特推的暴露工具,授权用户进行推特的分享。

自动处理推特API访问。

用户授权组件,方便的推特账户日志,请求邮件地址进行用户注册流量计算。

全功能的RESTFULL API访问。

4,Embedded Tweets 在自己的网站中添加有交互的Tweets.

5,Embedded timelines 一次通过过个Tweets来叙述你的故事

6,TweetDeck 创建发现和辅助最好的推文。

7,Twitter analytics 推文统计,检测你的内容在推特上的到达和点击

2,实时Data

1,PowerTrack 实时过滤和完善平衡你需要的数据

2,Decahose 10%的例子文章,帮助你展示个人业务的趋势

3,HistoricalPowerTrack

4,30-day Search

5,Full Archive Search全量的推文搜索服务。

6,Audience API

7,Engagement API

3,APIs用来访问和发布推特数据

1,REST API    (这里,简单用这个类别)

推特受用APIs来阅读和发送推特数据,使用推特的三方应用和用户使用 OAuth 进行认证。接口通过 json 数据结构进行响应。

如果你的注意点实时地吉安特和处理推特数据,可以考虑使用 Streaming API.

*使用 OAoth 1.0a进行用户权限认证。

api调用用限制:

每个时间窗口的截点划分为15分钟的时间块。可以更多独立的调用在每个时间窗口。每个应用,有明确的限制,同时只能有10w个用户token。对别的应用不提供更大量的生态系统支持。

api调用次数限制:

每个用户token,允许在同一个时间窗口,进行15个网络请求。通过认证的用户在整个应用的的方法请求中,都包含在这15个当中。但使用应用认知的时候,请求频率限制在整个应用,当使用用户认证的时候,其你去的频率则对于用户而言。

响应429,Too Many Requests.

响应88,Rate limit exceeded.

和时间线交互:

使用API搜索:

接口列表和访问限制:https://dev.twitter.com/rest/public/rate-limits

搜索本身是API提供接口能力的一个,因为有一些更多的内容,这里单独拿出来讲。

在使用搜索接口的使用,有一些特定的搜索字符规范,用来描述不同的搜索逻辑。https://dev.twitter.com/rest/public/search

搜索关于位置:

上传媒体文件:

文档引用:

2,Streaming API

3,Media API

4,Collections API

5,TON API

4,广告业务

1,MoPub

2,Ads API




RestFull接口列表:

GET

  • GET account/settings
  • GET account/verify_credentials
  • GET application/rate_limit_status
  • GET blocks/ids
  • GET blocks/list
  • GET collections/entries
  • GET collections/list
  • GET collections/show
  • GET direct_messages
  • GET direct_messages/events/list
  • GET direct_messages/events/show
  • GET direct_messages/sent
  • GET direct_messages/show
  • GET direct_messages/welcome_messages/list
  • GET direct_messages/welcome_messages/rules/list
  • GET direct_messages/welcome_messages/rules/show
  • GET direct_messages/welcome_messages/show
  • GET favorites/list
  • GET followers/ids
  • GET followers/list
  • GET friends/ids
  • GET friends/list
  • GET friendships/incoming
  • GET friendships/lookup
  • GET friendships/no_retweets/ids
  • GET friendships/outgoing
  • GET friendships/show
  • GET geo/id/:place_id
  • GET geo/reverse_geocode
  • GET geo/search
  • GET help/configuration
  • GET help/languages
  • GET help/privacy
  • GET help/tos
  • GET lists/list
  • GET lists/members
  • GET lists/members/show
  • GET lists/memberships
  • GET lists/ownerships
  • GET lists/show
  • GET lists/statuses
  • GET lists/subscribers
  • GET lists/subscribers/show
  • GET lists/subscriptions
  • GET media/upload (STATUS)
  • GET mutes/users/ids
  • GET mutes/users/list
  • GET saved_searches/list
  • GET saved_searches/show/:id
  • GET search/tweets
  • GET statuses/home_timeline
  • GET statuses/lookup
  • GET statuses/mentions_timeline
  • GET statuses/oembed
  • GET statuses/retweeters/ids
  • GET statuses/retweets/:id
  • GET statuses/retweets_of_me
  • GET statuses/show/:id
  • GET statuses/user_timeline
  • GET trends/available
  • GET trends/closest
  • GET trends/place
  • GET users/lookup
  • GET users/profile_banner
  • GET users/search
  • GET users/show
  • GET users/suggestions
  • GET users/suggestions/:slug
  • GET users/suggestions/:slug/members

POST

  • POST account/remove_profile_banner
  • POST account/settings
  • POST account/update_profile
  • POST account/update_profile_background_image
  • POST account/update_profile_banner
  • POST account/update_profile_image
  • POST blocks/create
  • POST blocks/destroy
  • POST collections/create
  • POST collections/destroy
  • POST collections/entries/add
  • POST collections/entries/curate
  • POST collections/entries/move
  • POST collections/entries/remove
  • POST collections/update
  • POST direct_messages/destroy
  • POST direct_messages/events/new (message_create)
  • POST direct_messages/new
  • POST direct_messages/welcome_messages/new
  • POST direct_messages/welcome_messages/rules/new
  • POST favorites/create
  • POST favorites/destroy
  • POST friendships/create
  • POST friendships/destroy
  • POST friendships/update
  • POST geo/place
  • POST lists/create
  • POST lists/destroy
  • POST lists/members/create
  • POST lists/members/create_all
  • POST lists/members/destroy
  • POST lists/members/destroy_all
  • POST lists/subscribers/create
  • POST lists/subscribers/destroy
  • POST lists/update
  • POST media/metadata/create
  • POST media/upload
  • POST media/upload (APPEND)
  • POST media/upload (FINALIZE)
  • POST media/upload (INIT)
  • POST mutes/users/create
  • POST mutes/users/destroy
  • POST saved_searches/create
  • POST saved_searches/destroy/:id
  • POST statuses/destroy/:id
  • POST statuses/retweet/:id
  • POST statuses/unretweet/:id
  • POST statuses/update
  • POST statuses/update_with_media (deprecated)
  • POST users/report_spam

PUT

    DELETE

    • DELETE direct_messages/welcome_messages/destroy
    • DELETE direct_messages/welcome_messages/rules/destroy


    上面对官网的内容,基本整理完了。

    现在,笔锋一转:我们在开发中怎么做呢:

    如果没有什么特殊情况,Twitter Kit 就能够满足所有的开发需要了。android , ios ,unity等都有。


    由于本人是干Android的,所以,这里自私一下,只说一下android的使用。

    Android:

    dependencies {  // Include all the Twitter APIs  compile 'com.twitter.sdk.android:twitter:3.0.0'  // (Optional) Monetize using mopub  compile 'com.twitter.sdk.android:twitter-mopub:3.0.0'}

    由于推特的工具箱,是分功能提供的,所以,可以分功能进行集成。

    dependencies {  compile 'com.twitter.sdk.android:twitter-core:3.0.0'  compile 'com.twitter.sdk.android:tweet-ui:3.0.0'  compile 'com.twitter.sdk.android:tweet-composer:3.0.0'  compile 'com.twitter.sdk.android:twitter-mopub:3.0.0'}
    官网建议的使用 jcenter 进行代码库下载,弟兄们都懂,慢的跟狗屎一样,所以 自己找个快的,自己爽就行。

    1,Application 初始化:

    public class CustomApplication {  public void onCreate() {    Twitter.initialize(this);  }}

    2,资源文件(这个再Twitter的应用管理里有)

    <resources>  <string android:name="com.twitter.sdk.android.CONSUMER_KEY">y5nrFawhcvC98z0VoYANnoETP</string>  <string android:name="com.twitter.sdk.android.CONSUMER_SECRET">DjPcnWZeKbI7xsb8gpyYsXxTrx5guTvAGui6C0FjBZ79rVaN6j</string></resources>
    3,自定义,修改默认的用户配置

    public void onCreate() {  TwitterConfig config = new TwitterConfig.Builder(this)    .logger(new DefaultLogger(Log.DEBUG))    .twitterAuthConfig(new TwitterAuthConfig("CONSUMER_KEY", "CONSUMER_SECRET"))//手动使用代码添加key,secret.    .debug(true)//打开或者关闭debug模式    .build();  Twitter.initialize(config);}
    4,所有的初始化操作完成之后,就可以使用Kit提供的单例化工具。

    TwitterCore.getInstance();

    TwitterUi.getInstance();

    TwitterComposer.getInstance();


    4-1,使用Twitter 登录。

    最简单的方式:

    <com.twitter.sdk.android.core.identity.TwitterLoginButton     android:id="@+id/login_button"     android:layout_width="wrap_content"     android:layout_height="wrap_content" />

    loginButton = (TwitterLoginButton) findViewById(R.id.login_button);loginButton.setCallback(new Callback<TwitterSession>() {   @Override   public void success(Result<TwitterSession> result) {       // Do something with result, which provides a TwitterSession for making API calls   }   @Override   public void failure(TwitterException exception) {       // Do something on failure   }});
    @Override    //Activity中protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    // Pass the activity result to the login button.    loginButton.onActivityResult(requestCode, resultCode, data);}
    @Override      //Fragment中protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    // Pass the activity result to the fragment, which will then pass the result to the login    // button.    Fragment fragment = getFragmentManager().findFragmentById(R.id.your_fragment_id);    if (fragment != null) {        fragment.onActivityResult(requestCode, resultCode, data);    }}
    登录成功后, TwitterSession 被用来提供成功的结果。

    TwitterSession session = TwitterCore.getInstance().getSessionManager().getActiveSession();TwitterAuthToken authToken = session.getAuthToken();String token = authToken.token;String secret = authToken.secret;

    一个接口的实例:

    官方提供自定义的Retrofit Service。

    更多接口的请求事例:https://dev.twitter.com/twitterkit/android/access-rest-api

    TwitterAuthClient authClient = new TwitterAuthClient();authClient.requestEmail(session, new Callback<String>() {    @Override    public void success(Result<String> result) {        // Do something with the result, which provides the email address    }    @Override    public void failure(TwitterException exception) {      // Do something on failure    }});
     

    4-2:推特发布

    提供两种方式:

    1,启动原生端推特发布器,功能丰富。

    2,启动Kit内部的原生发布器,一个轻量级的应用内置发布。

    1,启动推特原生发布器:

    TweetComposer.Builder builder = new TweetComposer.Builder(this)     .text("just setting up my Twitter Kit.")     .image(imageUri);//using content://....FileProvider.getUriForFile(this,APPID.file_provider,new File("/path/to/image"));builder.show();
    如果没有安装推特app,则会再浏览器中启动推特。但是图片等会被忽略。

    2,Kit发布器

    final TwitterSession session = TwitterCore.getInstance().getSessionManager()    .getActiveSession();final Intent intent = new ComposerActivity.Builder(YourActivity.this)    .session(session)    .image(uri)    .text("Love where you work")    .hashtags("#twitter")    .createIntent();startActivity(intent);

    发布成功后,推特上传服务,会发送成功或者失败的广播,开发者可以自定义接收处理:

    public class MyResultReceiver extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    if (TweetUploadService.UPLOAD_SUCCESS.equals(intent.getAction())) {      // success      final Long tweetId = intentExtras.getLong(TweetUploadService.EXTRA_TWEET_ID);    } else {      // failure      final Intent retryIntent = intentExtras.getParcelable(TweetUploadService.EXTRA_RETRY_INTENT);    }  }}
    <receiver  android:name=".MyResultReceiver"  android:exported="false">  <intent-filter>    <action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_SUCCESS"/>    <action android:name="com.twitter.sdk.android.tweetcomposer.UPLOAD_FAILURE"/>  </intent-filter></receiver>












    Twitter 自己的 library twitter_kit:

    android:

    https://dev.twitter.com/twitterkit/android

    ios:

    https://dev.twitter.com/twitterkit/ios

    为Twitter 平台开发的Libraries:

    各种语言都有支持。

    Temboo跨平台支持:https://temboo.com/library/Library/Twitter/。。。各种语言,各种平台。

    Java:

    http://twitter4j.org/en/index.html

    ✔ 100% Pure Java - works on any Java Platform version 5 or later
    ✔ Android platform and Google App Engine ready
    ✔ Zero dependency : No additional jars required
    ✔ Built-in OAuth support
    ✔ Out-of-the-box gzip support
    ✔ 100% Twitter API 1.1 compatible

    一个例子:

    https://github.com/twitterdev/android-samples


    使用Fabric的例子:

    https://github.com/twitterdev/FabricWithTwitter/tree/master/Android

    原创粉丝点击
    热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ebay账号邮箱忘了怎么办 易贝账号邮箱忘了怎么办 运动鞋网上擦了黑鞋油怎么办 真皮鞋用水洗了怎么办 支付宝余额限额了怎么办 微信余额转账限额怎么办 微信充值话费充错了怎么办 京东白条月限额怎么办 淘手游上买的账号被找回了怎么办 手机看视频缓冲慢怎么办 wan口状态未连接怎么办 王者荣耀本地回放过期怎么办 qq邮件发错了怎么办 千叶钻戒换款怎么办 车钥匙掉厕所了怎么办 宿舍有个整晚磨牙的室友该怎么办 百度云照片压缩后模糊怎么办 手机点+号无法上传图片怎么办 支付宝账户支付功能关闭怎么办 一件衣服买小了怎么办 交行u盾密码忘了怎么办 老婆婚内出轨丈夫应该怎么办 微信小程序获取用户信息失败怎么办 拼多多砍价没有完成怎么办 微信人数上限了怎么办 微信5000人满了怎么办 微信朋友满了怎么办啊 失业金签到忘签怎么办 gec安全密码忘了怎么办 唯品会微信商城地址错怎么办跨省 电脑突然没网了怎么办 移动光猫只能连一台电脑怎么办 网上银行用户名和密码忘了怎么办 中国银行网银用户名忘了怎么办 中行企业网银证书过期怎么办 腾讯会员被别人登录了怎么办 微信限90天提现转帐功能怎么办? 星巴克券过期了怎么办 京东买面膜发个空包怎么办 手机低于4.4版本怎么办才能恢复 263云通信密码忘了怎么办