我正在寻找一个帮助我构建OAuth提供程序的Java库.我必须能够接收OAuth签名请求并确定它们是否有效(检查签名,时间戳和现时值).
你知道是否有什么能让这项工作更容易吗?
任何人都可以使用scribe在Vimeo API中提供帮助吗?我的目标是访问私人视频(我上传),而不必强迫用户输入密码(此过程应在后台完成).
从我的理解/从研究中推断是必要的:
使用oAuth协议并通过以下链接请求申请授权:
https://vimeo.com/oauth/authorize?oauth_token=XXXX
此操作成功执行,响应数据发送到回调URL,如:
http://127.0.0.1:8001/XPTO.html?oauth_token=AUTH_TOKEN_EXAMPLE&oauth_verifier=VERIFIIER__EXAMPLE"
根据Brad Dougherty(Vimeo API Staff)的说法,可以做类似的事情
如果您自己完成OAuth流程,则可以保存该令牌并使用该令牌进行调用.
我正在使用此代码:
service = new ServiceBuilder().provider(VimeoApi.class)
.apiKey("API_KEY_EXAMPLE")
.apiSecret("API_SECRET_EXAMPLE")
.build();
OAuthRequest request = new OAuthRequest(Verb.GET,
"http://vimeo.com/api/rest/v2?video_id=50305416");
request.addQuerystringParameter("format", "json");
request.addQuerystringParameter("method", "vimeo.videos.getInfo");
String oauth_verifier=VERIFIER__EXAMPLE;
Verifier verifier = new Verifier(oauth_verifier);
//I've tried differents combination to create this token
//I believe that my problem is HERE
//One unsuccessfully try: Token requestToken = service.getRequestToken();
Token requestToken = new Token(
AUTH_TOKEN_EXAMPLE,
API_SECRET_EXAMPLE);
Token token = service.getAccessToken(requestToken, verifier);
service.signRequest(token, request);
Response response = request.send(); …Run Code Online (Sandbox Code Playgroud) 可能是之前已经问过这个问题,但我认为考虑到这些技术已经成熟,今天再考虑它是好的.我们希望使用flume,kafka,scribe或其他人之一将流媒体facebook和twitter个人资料信息存储到hbase中,以便稍后进行分析.我们正在为此目的考虑水槽,但我没有与其他技术合作以做出明智的决定.任何可以发光的人都会很棒!非常感谢.
使用scribe OAuth库时出现以下异常.
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Run Code Online (Sandbox Code Playgroud)
基于一些谷歌搜索似乎我应该以某种方式设置JVM信任库.
为什么我需要这样做?如何指示Java VM使用os的默认信任库?(在我的情况下是Mac OS X).
我正在玩scribe库(https://github.com/fernandezpablo85/scribe-java),试图访问Magento商店产品,但我遇到了一些问题(可能是Magento配置).
我正在使用以下代码:
OAuthService service = new ServiceBuilder().provider(Magento17Api.class).apiKey(MAGENTO_API_KEY).apiSecret(MAGENTO_API_SECRET).build();
OAuthRequest request = new OAuthRequest(Verb.GET, MAGENTO_REST_API_URL
+ "/products");
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println(response.getBody());
Run Code Online (Sandbox Code Playgroud)
但我总是收到这样的答复:
{"messages":{"error":[{"code":0,"message":"Admin role not found"}]}}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我需要使用oAuth 与Viagogo网站建立联系.参考他们的文档,我需要创建一个类似于下面的请求
Using the example in step 1A, this means you may generate a signature base string that looks like the following:
GET&http%3A%2F%2Fapi.viagogo.net%2FPublic%2FSimpleOAuthAccessRequest&oauth_consumer_key%3Dtestkey%26oauth_nonce%3Dmyn0nc3%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1292404912%26oauth_version%3D1.0%26scope%3DAPI.Public
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码,但是当我对第1,2行进行注释时,它会返回未经授权的错误,当我使用它们时,它会显示oauthService.signRequest返回void.
TradeKingAPI.java
import org.scribe.builder.api.DefaultApi10a;
import org.scribe.model.Token;
public class TradeKingAPI extends DefaultApi10a {
@Override
public String getRequestTokenEndpoint() {
return "http://api.viagogo.net/Public/SimpleOAuthAccessRequest";
}
@Override
public String getAccessTokenEndpoint() {
return "http://api.viagogo.net/Public/SimpleOAuthAccessRequest";
}
@Override
public String getAuthorizationUrl(Token requestToken) {
return "http://api.viagogo.net/Public/SimpleOAuthAccessRequest";
}
}
Run Code Online (Sandbox Code Playgroud)
main.java
import org.scribe.builder.ServiceBuilder;
import org.scribe.model.OAuthRequest;
import org.scribe.model.Response;
import org.scribe.model.Token;
import org.scribe.model.Verb; …Run Code Online (Sandbox Code Playgroud) 编辑:我想我已经弄清楚如何做二进制数据部分.在代码中仔细检查它,但我很确定我做对了.现在,我在尝试按照Vimeo API文档中的描述完成上传时遇到了新错误
编辑2:将 .debug()添加到OAuthService并更新输出.
原始问题:我正在尝试使用Vimeo API(流媒体方法)将视频上传到Vimeo .我正在使用scribe来授权我的应用,获取我的访问令牌并准备上传视频.在这个PUT的HTTP请求示例中,我只是不知道该做什么,Vimeo API文档说"你这里的文件的二进制数据":
PUT http://1.2.3.4:8080/upload?ticket_id=abcdef124567890 HTTP/1.1
主持人:1.2.3.4:8080
内容长度:339108
内容类型:video/mp4
....你的文件的二进制数据在这....
我可以得到罚单和标题.它只是,我该怎么做才能插入我的文件的二进制数据?
笔记:
这是我的put代码(记住,我正在使用scribe)
// Setup File (line 52)
File testUp = new File("C:/Users/Kent/Desktop/test.mp4");
String contentLength = Long.toString(testUp.length());
System.out.println("The content length is: " + contentLength);
byte[] fileBytes = ByteStreams.toByteArray(new FileInputStream(testUp));
// Upload file (line 58)
request = new OAuthRequest(Verb.PUT, endpoint);
request.addHeader("Content-Length", contentLength);
request.addHeader("Content-Type", "video/mp4");
request.addPayload(fileBytes);
response = signSendAndPrint(service, accessToken, request, "Upload PUT: " + …Run Code Online (Sandbox Code Playgroud) 我正在开发的项目需要scribe-java和crashlytics库.这两个库都可以从自定义存储库中获得.
build.gradle 好像:
buildscript {
repositories {
maven { url 'http://download.crashlytics.com/maven' }
}
dependencies {
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
}
}
apply plugin: 'android'
apply plugin: 'crashlytics'
repositories {
// is required by Crashlytics library
maven { url 'http://download.crashlytics.com/maven' }
// is required by Scribe library
maven { url 'https://raw.github.com/fernandezpablo85/scribe-java/mvn-repo/' }
}
....
dependencies {
compile 'com.android.support:support-v4:+'
compile 'com.crashlytics.android:crashlytics:1.+'
...
// OAuth/OAuth2
compile 'org.scribe:scribe:1.3.6'
...
}
Run Code Online (Sandbox Code Playgroud)
使用这样的设置存储库解决方案在构建过程中变得混乱,以至于gradle尝试从不适当的存储库中解析工件:
Resource missing. [HTTP GET: https://raw.github.com/fernandezpablo85/scribe-java/mvn-repo/com/crashlytics/android/crashlytics/maven-metadata.xml]
Failed to get resource: GET. [HTTP …Run Code Online (Sandbox Code Playgroud) 我是OAuth的新手,但想找到一个好的开始方式,并使用一个广泛支持的库
以下是有什么好处和坏处(可能还有更多,但这些是我迄今为止找到的基于Java的)
是的,这是一个很长的问题,有很多细节...所以,我的问题是:我如何将上传流式传输到Vimeo?
对于想要在自己的机器上进行复制和调试的人:以下是您需要的东西:
大更新:我在这里的代码中留下了一个工作的API Key和Secret for Vimeo .因此,只要您拥有Vimeo帐户,一旦您允许应用程序并输入令牌,所有代码都可以正常工作.只需将该链接中的代码复制到您喜欢的IDE上的项目中,看看是否可以通过我来解决这个问题.我会把奖金交给给我工作代码的人.谢谢!哦,不要指望长期使用这个Key和Secret.一旦这个问题得到解决,我就会删除它.:)
问题概述:问题是当我将最后一块字节发送到Vimeo然后验证上传时,响应返回所有内容的长度只是最后一个块的长度,而不是所有块的组合,因为它应该.
SSCCE注意:我在这里有我的整个SSCCE .我把它放在别的地方,因此它可以是Ç ompilable.是不是很小号园艺(约300线),但希望你发现它是小号精灵包含的,它肯定是一个ê xample!).但是,我在这篇文章中发布了我的代码的相关部分.
这是它的工作原理:当您通过流方法将视频上传到Vimeo时(请参阅此处的上载API文档以进行设置以达到此点),您必须提供一些标题:端点,内容长度和内容类型.文档说它忽略了任何其他标题.您还要为其上传的文件提供字节信息的有效负载.然后签名并发送它(我有一个方法,将使用scribe这样做).
我的问题:当我在一个请求中发送视频时,一切都很有效.我的问题是在我上传几个较大的文件的情况下,我正在使用的计算机没有足够的内存来加载所有的字节信息并将其放入HTTP PUT请求中,因此我必须将其拆分为1 MB段.这是事情变得棘手的地方.该文档提到可以"恢复"上传,所以我试图用我的代码做到这一点,但它不能正常工作.下面,您将看到发送视频的代码.记住我的SSCCE就在这里.
我尝试过的事情:我认为它与Content-Range标题有关...所以这里是我尝试改变Content-Range标题所说的内容......
在内容范围标题中添加前缀(每个标题都包含前一个标题的组合):
1001-339108/339108应该是什么时候1001-339107/339108.是的...不向内容范围标头添加任何内容作为前缀
这是代码:
/**
* Send the video data …Run Code Online (Sandbox Code Playgroud) scribe ×10
java ×7
oauth ×5
vimeo ×3
oauth-2.0 ×2
android ×1
api ×1
build.gradle ×1
consumer ×1
file-upload ×1
flume ×1
gradle ×1
http-put ×1
java-ee ×1
macos ×1
magento ×1
magento-1.7 ×1
socialauth ×1
truststore ×1
upload ×1