标签: scribe

在Android上使用OAuth和Scribe一起使用

嗨我正在使用抄写库与LInkedIn进行OAuth通信.

我有一个登录类和一个查询类.

登录类创建一个服务来获取我的请求令牌和机密,并创建我的访问令牌.然后将访问令牌保存到首选项文件中.这似乎工作正常,我可以在创建所有令牌后成功进行api调用.

在我的OAuth查询类中,我检索访问令牌,创建另一个服务并尝试进行API调用,但是当我加载一个调用此类的活动时,它会导致我的应用程序崩溃.我已经过测试,以确保访问令牌已保存,并且它们是.

这是我的登录类

public class Login_LinkedIn extends Activity 
{
SharedPreferences settings;
OAuthService service;
Token requestToken;

Button home;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webauth);

    initControls();

    service = new ServiceBuilder()
    .provider(LinkedInApi.class)
    .apiKey( getString(R.string.apiKey) )
    .apiSecret( getString(R.string.secKey) )
    .callback( getString(R.string.callBack) )
    .build();

    requestToken = service.getRequestToken();
    final String authURL = service.getAuthorizationUrl(requestToken);

    final WebView webview = (WebView) findViewById(R.id.webView);

    //attach WebViewClient to intercept the callback url
    webview.setWebViewClient(new WebViewClient()
    {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {

            //check for our custom callback …
Run Code Online (Sandbox Code Playgroud)

java android oauth linkedin scribe

6
推荐指数
1
解决办法
8301
查看次数

redirect_uri不是绝对URI

我正在使用Scribe API进行Facebook签名功能,但在提交facebook身份验证网址后出现以下错误.

callback_url = http://localhost:18080/example/pub/social/facebook/signup/step2

OAuthService service = new ServiceBuilder().provider(FacebookApi.class)
                .apiKey(apiKey).apiSecret(apiSecret)
                .scope("email")
                .callback(callbackUrl).build();

String authorizationUrl = service.getAuthorizationUrl(EMPTY_TOKEN);

return "redirect:" + map.get("AUTHORIZATION_URL");

OAuthService service = new ServiceBuilder().provider(FacebookApi.class)
                .apiKey(apiKey).apiSecret(apiSecret).build();
Verifier verifierObj = new Verifier(verifier);
        //String s = getAccesstoken(verifier);

Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifierObj)
Run Code Online (Sandbox Code Playgroud)

我得到的错误@最后一行

响应正文不正确.无法从中提取令牌:'{"error":{"message":"redirect_uri不是绝对URI.请检查RFC 3986.","type":"OAuthException","code":191}} "

设置n facebook app:

**Website with Facebook Login** : http://localhost:18080/example/
App domain : localhost
Run Code Online (Sandbox Code Playgroud)

如果我在任何地方都错了,请告诉我...抄写和facebook平台新手.

谢谢Raj

facebook scribe facebook-graph-api

6
推荐指数
1
解决办法
2206
查看次数

Java SSL DH密钥对生成 - Prime大小错误

我目前正在将Reddit OAuth2登录到我的网络应用程序中.握手和令牌交换在本地测试时工作正常但在服务器上运行时(托管在'OpenShift'DIY盒式磁带上)我收到以下错误:

java.security.InvalidAlgorithmParameterException: Prime size must be 
multiple of 64, and can only range from 512 to 1024 (inclusive)
Run Code Online (Sandbox Code Playgroud)

结果如何

java.lang.RuntimeException: Could not generate DH keypair 
Run Code Online (Sandbox Code Playgroud)

我一直在搜索大部分时间并找到了不同的解决方案,从更改Java版本到使用BouncyCastle.但是,我正在使用Scribe库,所以我不认为我可以实现BouncyCastle而不用分叉和改变划线的基础,这样做会破坏它的目的.

安装JCE Unlimited Strength也出现了,但我不能在OpenShift上做到这一点,因为没有root访问权限(可能能够让他们的团队中的一个人去做).

正在使用的java版本(取自java -version):

本地试验机:

java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)

OpenShift服务器:

java version "1.7.0_51"
OpenJDK Runtime Environment (rhel-2.4.4.1.el6_5-i386 u51-b02)
OpenJDK Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我无法解决这个问题.希望我是愚蠢或误解的东西,所以任何可能的解决方案都会很棒!

-

编辑1

返回错误的请求代码(正如我所提到的,使用Scribe,因此可能没什么用处).令牌端点正在https://ssl.reddit.com/api/v1/access_token使用POST.正如我上面所说,这适用于我的测试机器.

OAuthRequest request …
Run Code Online (Sandbox Code Playgroud)

java ssl scribe oauth-2.0 openshift

6
推荐指数
1
解决办法
3万
查看次数

OAuth使用Scribe与Vimeo集成

我已经能够使用Scribe API从Vimeo成功获取访问令牌.

但是,当我尝试访问受保护的资源时,我收到无效的签名错误.我OAuthService用来尝试访问受保护资源,我看起来像:

OAuthService service = new ServiceBuilder()
    .provider(VimeoApi.class)
    .apiKey(APIKEY)
    .apiSecret(API_SECRET)
    .signatureType(SignatureType.QueryString)
    .build();
Run Code Online (Sandbox Code Playgroud)

然后,我发出请求,执行以下操作:

  OAuthRequest orequest = new OAuthRequest(Verb.GET, "http://vimeo.com/api/rest/v2");
  orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota");
Run Code Online (Sandbox Code Playgroud)

这失败了,告诉我签名无效.

java oauth vimeo scribe

5
推荐指数
1
解决办法
1027
查看次数

使用ColdFusion检索Linkedin Group讨论帖

我被客户要求将他们LinkedIn组中的最新帖子提取到我们的网站页面之一.

我正在使用ColdFusion 9进行开发,并且已经研究了这几天了,并决定在这里发布我的查询,希望有人能够帮助我.

我可以达到我有一个requestToken的地步.我的理解是,我现在需要签署请求令牌以获取accessToken.我的问题是我需要在幕后做这件事.但是,我能找到的所有示例都是将前端用户重定向到授权URL以允许用户进行身份验证,但我不希望用户进行身份验证,我想要对服务器端进行身份验证.

我正在尝试使用Scribe Java包装器库.下面是我到目前为止获取requestToken(以及授权URL)的代码.我需要有人指出我在正确的方向上签署服务器端代码上的令牌,以便我可以进行必要的调用以使用Groups API(例如http://api.linkedin.com/v1/groups/{id}/posts?count=5&start=1)

<cfscript>
    var l = {};
    //The LinkedIn public and private keys for application
    l.oauth_consumer_key = "[My public key]";
    l.oauth_sign_key = "[My secret key]";
    l.serviceBuilder = CreateObject("java","org.scribe.builder.ServiceBuilder");
    l.LinkedInApiClass = CreateObject("java", "org.scribe.builder.api.LinkedInApi").getClass();
    l.service = l.serviceBuilder.provider(l.LinkedInApiClass).apiKey(l.oauth_consumer_key).apiSecret(l.oauth_sign_key).callback("[My callback url]").build();
    l.requestToken = l.service.getRequestToken();
    l.authUrl = l.service.getAuthorizationUrl(l.requestToken);

    // I NEED TO DEFINE WHAT TO DO AT THIS POINT TO SIGN THE REQUEST SERVER SIDE
    ...
    ...
</cfscript>
Run Code Online (Sandbox Code Playgroud)

coldfusion linkedin scribe linkedin-api

5
推荐指数
1
解决办法
1067
查看次数

java"ClassNotFoundException"错误

我是java编程的新手,我收到了很多错误的"ClassNotFoundException"错误.

奇怪的是它编译得很好:

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我收到以下错误:

steve@steve-ThinkPad-T61:~/facebook$ java  FacebookProg  
Exception in thread "main" java.lang.NoClassDefFoundError:
org/scribe/builder/ServiceBuilder  
    at FacebookProg.main(FacebookProg.java:8)  
Caused by: java.lang.ClassNotFoundException: org.scribe.builder.ServiceBuilder  
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)  
    at java.security.AccessController.doPrivileged(Native Method)  
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)  
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)  
    ... 1 more  
Run Code Online (Sandbox Code Playgroud)

我在网上查了一下,似乎java无法在运行时找到它能够在编译时找到的库.所以尝试了以下变化:

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg  
java -cp /usr/share/java/ FacebookProg  
export CLASSPATH="/usr/share/java"; java FacebookProf  
export CLASSPATH="/usr/share/java/usr/share/java/scribe-1.3.0.jar"; java FacebookProg  
Run Code Online (Sandbox Code Playgroud)

我检查了StackOverflow和google上的几个地方,仍然无法找出原因.我是java的新手,所以可能有一个简单的解决方案,但我找不到它.我在Ubuntu 11.04上使用Sun Java 1.6 64位.scribe-1.3.0.jar文件位于"/ usr/share/java"中,我相信它是放置java包的规范位置.

准系统代码在这里(如果它很重要):

import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.oauth.*;

public class FacebookProg {
    public static void main (String args[]) {
        OAuthService …
Run Code Online (Sandbox Code Playgroud)

java classpath scribe classnotfoundexception

5
推荐指数
1
解决办法
1万
查看次数

无法从Google Plus访问用户的个人资料

我使用Scribe-Java使用OAuth2连接到Google Plus.我能够验证我的应用程序并获得用户的许可,但是当我尝试访问除了以外的任何内容时userinfo,我收到此异常.

403

{

"错误":{

  "errors": [
            {

          "domain": "usageLimits",
           "reason": "accessNotConfigured","message": "Access Not Configured"

            }

            ],

  "code": 403,

"message": "Access Not Configured"

     }

}
Run Code Online (Sandbox Code Playgroud)

我已将应用程序的范围设置https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.profile为访问用户的配置文件我正在使用此URL:

https://www.googleapis.com/plus/v1/people/{userid}/activities/public

你能告诉我我做错了什么吗?我需要在这里使用其他范围来访问配置文件吗?

java scribe oauth-2.0 google-plus

5
推荐指数
1
解决办法
3334
查看次数

Twitter不记得授权

我使用Scribe(OAuth1.0)作为一种机制,以便用户可以使用他们的Twitter帐户对我的GWT/GAE应用程序进行身份验证.

根据https://dev.twitter.com/docs/auth/implementing-sign-twitter,有3种可能的情况:a /用户已签名并获得批准.在这种情况下,Twitter应该将用户透视地重定向回我的应用程序URL,b /用户已登录但未授权,或者c/user未登录

当Twitter返回我的应用程序(回调)时,我使用verifier参数从twitter读取用户数据,我用它来确定我的应用程序中的用户.

所有这些工作正常,除了以下内容:

情景a /对我不起作用.尽管用户已经授权我的应用程序读取他的用户数据,但Twitter似乎不记得这一点,并再次要求授权访问.(方案b /).

twitter oauth scribe twitter-oauth

5
推荐指数
1
解决办法
2007
查看次数

用Twitter编写奇怪的不受控制的异常

我对Scribe很新,但是当我尝试通过Twitter进行身份验证时,一个奇怪的错误就会上升.我的代码与TwitterExample完全相同:

        OAuthService service = new ServiceBuilder()
            .provider(TwitterApi.class)
            .apiKey("XXXXXXXXXXXXXX<<custom>>XXXXXXXXXXXXXXX")
            .apiSecret("YYYYYYYYYYYYYYYY<<custom>>YYYYYYYYYYYYYYYYYYYYYYYYY")
            .debug()
            .build();

        Token requestToken = service.getRequestToken();

        Log.i("OAUTH LINK", service.getAuthorizationUrl(requestToken));

        Verifier verifier = new Verifier("verifier you got from the user");
        Token accessToken = service.getAccessToken(requestToken, verifier);

        OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
        service.signRequest(accessToken, request);
        response = request.send();
        Log.i("OAUTH RESPONSE",response.getBody());
Run Code Online (Sandbox Code Playgroud)

返回的调试输出是:

  • I/System.out(1776):从http://api.twitter.com/oauth/request_token获取请求令牌
  • I/System.out(1776):将oauth_callback设置为oob
  • I/System.out(1776):生成签名...
  • I/System.out(1776):使用base64编码器:CommonsCodec
  • I /的System.out(1776):基本字符串是:POST&HTTP%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%3DXXXXXXXXXXXXXXXXXXXXX%26oauth_nonce%3D1095830595%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1391024186%26oauth_version %3D1.0
  • I/System.out(1776):签名为:In0u/SlHz9cr5NLAQK56kALJ3hI =
  • I/System.out(1776):附加额外的OAuth参数:{oauth_callback - > oob,oauth_signature - > In0u/SlHz9cr5NLAQK56kALJ3hI =,oauth_version - > 1.0,oauth_nonce - > 1095830595,oauth_signature_method - > HMAC-SHA1,oauth_consumer_key - > XXXXXXXXXXXXXXXXXXXX, oauth_timestamp - …
  • scribe

    5
    推荐指数
    1
    解决办法
    916
    查看次数

    如何使用OAuth签名方法为HMAC-SHA1加密签署请求

    我们正在尝试与另一家公司的自定义API建立联系,该API使用两条腿OAuth来验证请求并向我们发送回复.

    目前我们的代码是发送一个请求,但它没有在另一端进行身份验证,因此发送了一个UNAUTHORIZED响应.

    如其他公司所述,认证包括以下步骤.

    "使用两条腿OAuth身份验证处理身份验证:

    All requests must include both an oauth_consumer_key and an oauth_signature attribute submitted via the HTTP GET method.
        The oauth_consumer_key attribute will be the user name that the user uses to access our web site.
        The oauth_signature attribute is obtained by signing the request with the OAuth signature method for HMAC-SHA1 encryption. The signature is generated using both the oauth_consumer_key attribute and the consumer secret. A single consumer secret is required per franchise and can be obtained …
    Run Code Online (Sandbox Code Playgroud)

    java oauth scribe

    5
    推荐指数
    0
    解决办法
    869
    查看次数