gpt4 book ai didi

oauth - 使用openid4java的YouTube OpenID + OAuth

转载 作者:行者123 更新时间:2023-12-03 05:30:09 25 4
gpt4 key购买 nike

我的应用程序允许用户使用来自Google或Yahoo的OpenID登录。还有一个功能,允许用户上传到YouTube。一些用户是通过YouTube上下文到达的,目的是创建内容并将其上传到YouTube。这些用户将需要授权我的应用程序通过OpenID访问其Google帐户中的地址,以及通过OAuth访问其YouTube帐户。我希望通过单击用户的授权即可实现此目的。

我已经在这里看到了:http://www.youtube.com/create/Xtranormal。从此应用发送到Google OpenID端点的请求是:

https://accounts.google.com/o/openid2/auth?
openid.ns=http://specs.openid.net/auth/2.0&
openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&
openid.identity=http://specs.openid.net/auth/2.0/identifier_select&
openid.return_to=http://www.xtranormal.com/social/openid/complete/?next%3Dhttp%253A%252F%252Fyoutube.xtranormal.com%252Fytmm%252Fauth_popup_done%252F%26janrain_nonce%3D2011-08-29T16%253A35%253A53ZW0VqRw&
openid.assoc_handle=AOQobUcMlV0Hmk431QROK27UegIYqYffiPeCuZ8gsB2x5ULYP0FXuoDZ&
openid.ax.mode=fetch_request&
openid.ax.required=ext0,ext1,ext2&
openid.ax.type.ext0=http://axschema.org/namePerson/first&
openid.ax.type.ext1=http://axschema.org/namePerson/last&
openid.ax.type.ext2=http://axschema.org/contact/email&
openid.mode=checkid_setup&
openid.ns.ax=http://openid.net/srv/ax/1.0&
openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0&
openid.ns.sreg=http://openid.net/extensions/sreg/1.1&
openid.oauth.consumer=www.xtranormal.com&
openid.oauth.scope=http://gdata.youtube.com/&
openid.realm=http://www.xtranormal.com/&
openid.sreg.optional=postcode,country,nickname,email,fullname

应用程序上的所有其他OpenID支持(效果很好)均使用OpenID4Java编写。我尝试通过实现 This answer中的提示来创建类似的请求,但是,我一辈子都无法让Google弹出窗口向我询问YouTube,它只询问电子邮件地址。

我通过添加以下消息扩展名从答案中添加参数:
public class OAuthHybridRequest implements MessageExtension{
public static String SCOPE_YOUTUBE = "http://gdata.youtube.com/";
ParameterList parameters;
public OAuthHybridRequest(String scope){
parameters = new ParameterList();
parameters.set(new Parameter("consumer", DeploymentProperties.getDeploymentProperty("OAUTH_CONSUMER_KEY")));
parameters.set(new Parameter("scope", scope));
}
public ParameterList getParameters() {
return parameters;
}
public String getTypeUri() {
return "http://specs.openid.net/extensions/oauth/1.0";
}
...
}

这使得我的请求看起来像这样:
https://accounts.google.com/o/openid2/auth?
openid.ns=http://specs.openid.net/auth/2.0&
openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&
openid.identity=http://specs.openid.net/auth/2.0/identifier_select&
openid.return_to=http://martin.test.example.no/socialdelegation/hybrid/youtube/sso/auth?is_callback%3Dtrue%26requestedURL%3D%252Fmovieeditor%252Fscripts%252Fpopupcloser.jsp&
openid.realm=http://martin.test.example.no&
openid.assoc_handle=AOQobUcMkuyp1pVZjpF-b8dVqTfB6Y6IyOZxihsk-XD1DOq0xv06lrlPgaJEF-ITUCdJiXPi&
openid.mode=checkid_setup&
openid.ns.ext1=http://specs.openid.net/extensions/oauth/1.0&
openid.ext1.consumer=test.example.no&
openid.ext1.scope=http://gdata.youtube.com&
openid.ns.sreg=http://openid.net/sreg/1.0&
openid.sreg.required=fullname,nickname,email&
openid.ns.ext3=http://openid.net/srv/ax/1.0&
openid.ext3.mode=fetch_request&
openid.ext3.type.email=http://axschema.org/contact/email&
openid.ext3.type.firstName=http://axschema.org/namePerson/first&
openid.ext3.type.lastName=http://axschema.org/namePerson/last&
openid.ext3.type.userName=http://axschema.org/namePerson/friendly&
openid.ext3.type.gender=http://axschema.org/person/gender&
openid.ext3.type.fullName=http://axschema.org/namePerson&
openid.ext3.required=email,firstName,lastName,userName,gender,fullName

我在这里想念什么?

最佳答案

下载用于openid4java zip文件from here (comment 8)的oauth ext并将类添加到您的项目中。然后:

// enable oauth ext for openid4java (do once)
Message.addExtensionFactory(OAuthMessage.class);

// add oauth extension to open-id request
AuthRequest authReq = ...;
OAuthRequest oauthRequest = OAuthRequest.createOAuthRequest();
oauthRequest.setScopes("oauth scope");
oauthRequest.setConsumer("oauth consumer key");
authReq.addExtension(oauthRequest);

// extract oauth request token from open-id response
AuthSuccess authSuccess = ...;
if (authSuccess.hasExtension(OAuthMessage.OPENID_NS_OAUTH)) {
OAuthResponse oauthRes = (OAuthResponse) authSuccess
.getExtension(OAuthMessage.OPENID_NS_OAUTH);
// use this request token (without secret and verifier) and your oauth lib
// to get oauth access token
String oauthRequestToken = oauthRes.getRequestToken();
}

关于oauth - 使用openid4java的YouTube OpenID + OAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7241094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com