【问题标题】:Using Temboo to post with Facebook and Twitter使用 Temboo 在 Facebook 和 Twitter 上发帖
【发布时间】:2013-12-19 00:17:56
【问题描述】:

我需要允许我的应用在用户的 Facebook 和 Twitter 墙上发布某些消息。这个想法就像呈现一个按钮一样简单,一旦用户点击它,他就会被要求登录他的 Facebook 帐户(无论方式如何)并授予我的应用程序编写权限,我的应用程序将能够发布一个某些消息(或者至少我的应用程序应该能够检查用户是否稍后发布了该消息)。带有另一个按钮的 Twitter 也是如此。

Android 版 Facebook SDK 和 Twitter SDK 一开始看起来太吓人了,我只想在用户点击按钮时登录并发布消息。我一直在研究,Temboo 库真的很有前途。我已经对其进行了测试,我可以毫无问题地在 Facebook 和 Twitter 上发布,提供我自己帐户的凭据。问题在于允许用户在自己的帐户中发布的登录步骤。

按照 Temboo 程序,我尝试使用 Choreos InitializeOAuth 和 FinalizeOAuth。如果我没记错的话,InitializeOAuth 会返回一个回调 URL,必须向用户提供该 URL 以允许我的应用发布或其他任何内容。但是怎么做?我是否需要在 webview 中加载该 URL,然后检测用户何时在 webview 中登录?我不知道。 Temboo 的网站和强大的功能看起来令人惊叹,但文档中缺少一个像 Android 中的 Facebook 或 Twitter 中的整个身份验证过程一样有用的示例...... :'(

【问题讨论】:

  • 为什么有人会关闭这个问题?它出什么问题了? o.O

标签: android oauth temboo


【解决方案1】:

简而言之,您对如何在 Android 应用程序中实现 OAuth 流程是正确的。概括地说,您的应用程序将:

  1. 运行 InitializeOAuth Choreo
  2. 打开一个 WebView,指向 InitializeOAuth 返回的授权 URL
  3. 用户在 WebView 中单击“允许”后,运行 FinalizeOAuth Choreo 以检索访问令牌

上面 #3 的技巧是能够使用“意图过滤器”在 Android 中注册自定义 URL 处理方案。在您的 AndroidManifest.xml 文件中,您需要将自定义意图过滤器分配给您的一个活动,使用如下代码:

<activity android:name=".MyOAuthActivity">
<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:scheme="temboo" android:host="twitter" />
</intent-filter>
</activity>

这段代码的意思是,如果您的应用程序收到对“temboo://twitter”之类的 url 的请求,那么该请求将自动转发到您指定的 Activity ——在本例中为 MyOAuthActivity。

当您运行 InitializeOAuth Choreo 时,您需要指定“temboo://twitter”(或您使用的任何自定义意图方案)作为“转发 URL”输入。这将导致 Temboo 在用户在 OAuth 网络视图中单击“允许”后将请求转发回您的活动。

在您的 Activity 中,您可以使用自定义方案拦截 URL,代码如下:

// Find the webview, and make sure Javascript is enabled.
WebView webview = (WebView)findViewById(R.id.oauthWebview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient() { 


    // Here we override the onPageStarted method of the webview. If Twitter authorization
    // succeeds, we'll be redirected to a URL that looks like temboo://twitter
    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        if(url.startsWith("temboo://")) {
            handled = true;
           // We got forwarded here from the 3rd party OAuth approval page; proceed
           // to next step
           Log.i("Temboo", "Got callback!");
           Intent i = new Intent(getBaseContext(), FinalizeOAuthActivity.class);
           i.putExtra("callbackID", callbackID);
           startActivity(i); 
        }
    } 
});

webview.loadUrl(authorizationURL);`

顺便说一句,我在 Temboo 工作,所以如果您有任何其他问题,请随时与我们联系。

【讨论】:

  • 非常感谢!你拯救了我的一天。我已经测试了您的解决方案,并与 Facebook 和 Twitter 完美配合。然而,遗憾的是 Temboo 网站缺少所有这些(尽管 choreos 文档非常棒),以及 Facebook 和 Twitter 开发者网站中所需的配置(而 Facebook 的配置并不直接)。
  • 只有一个问题:我遵循了此处的建议 (support.temboo.com/entries/24131857-Using-OAuth-Choreos) 使用此回调:“https://{Your Temboo Acount Name}.temboolive.com/callback/”,但它似乎坏了(当然要替换我的用户名)。它总是给出 HTTP ERROR 500 '问题访问 /arcturus-web/callback/。原因:对不起,这不是注册的回调路径!'
  • 所有过程都有效,但我只是想知道为什么那个 URL 不起作用。一旦我的 Android 应用捕获 URL 重定向,我将关闭 web 视图并继续显示我自己的活动的过程,但是,该 web 不应该工作吗?
  • 感谢您让我们知道这一点。我现在没有答案给你,但我们会调查并弄清楚发生了什么。一个快速的问题 - 你是否也删除了括号?这是我的 URL 的示例:cormac.temboolive.com/callback
  • 是的,当然。您的 URL 将我带到相同的错误页面:HTTP ERROR 500 Problem accessing /arcturus-web/callback/. Reason: Sorry, that's not a registered callback path!
猜你喜欢
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 2013-05-31
相关资源
最近更新 更多