[
https://issues.jboss.org/browse/SEAMSOCIAL-32?page=com.atlassian.jira.plu...
]
Hendy Irawan commented on SEAMSOCIAL-32:
----------------------------------------
Thank you Tomas, as of 12 Feb 2012 the Readme in
https://github.com/seam/social only
mentions it like this:
{code}
Create an OAuthService bean thru Seam configuration (in bean.xml)
Due to limitation of Solder XML configuration you'll have to provide the
implementation class of the bean in the configuration file Here is an example of such a
configuration :
<beans
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:s="urn:java:ee"
xmlns:o="urn:java:org.jboss.seam.social:org.jboss.seam.social.oauth:org.jboss.seam.social.twitter.jackson">
<o:TwitterServiceJackson>
<s:modifies />
<o:OAuthApplication apiKey="FQzlQC49UhvbMZoxUIvHTQ"
apiSecret="VQ5CZHG4qUoAkUUmckPn4iN4yyjBKcORTW0wnok4r1k"
callback="http://localhost:8080/social-web-client/callback.jsf" />
</o:TwitterServiceJackson>
</beans>
Api Key and Api secret is provided by the service you want to consume (here Twitter). You
can use the values above since they're coming from "Seam Social" Twitter
application. Callback depends on your application : it's the URL that will collect
OAuth verifier
Inject an OAuthService bean with one of the following ways :
Using the Interface of the service
@Named
@SessionScoped
public class mySessionBean implements Serializable {
...
@Inject
public TwitterService twitter;
...
}
{code}
However it doesn't seem to be the problem.
My app can get the TwitterService (TwitterServiceJackson) instance without any problem,
however when calling a method there, it will in turn call getProvider() which will fail.
As you can see in the stacktrace snippet:
{code}
at org.jboss.seam.social.oauth.OAuthServiceBase.getProvider(OAuthServiceBase.java:88)
[seam-social-3.1.0.Final.jar:]
at
org.jboss.seam.social.oauth.OAuthServiceBase.sendSignedRequest(OAuthServiceBase.java:139)
[seam-social-3.1.0.Final.jar:]
at
org.jboss.seam.social.twitter.jackson.TwitterServiceJackson.updateStatus(TwitterServiceJackson.java:97)
[seam-social-twitter-3.1.0.Final.jar:]
at
org.jboss.seam.social.twitter.jackson.TwitterServiceJackson.updateStatus(TwitterServiceJackson.java:45)
[seam-social-twitter-3.1.0.Final.jar:]
at com.satukancinta.ui.admin.UserShowAdmin.publishTwitterStatus(UserShowAdmin.java:262)
[classes:]
{code}
the error occurs after entering the TwitterServiceJackson implementation, which means
TwitterServiceJackson is injected correctly.
twitter.updateStatus() error: Unable to resolve any beans for Types:
interface org.jboss.seam.social.oauth.OAuthProvider
------------------------------------------------------------------------------------------------------------------------
Key: SEAMSOCIAL-32
URL:
https://issues.jboss.org/browse/SEAMSOCIAL-32
Project: Seam Social
Issue Type: Bug
Components: Twitter
Affects Versions: 3.1.0.Final
Reporter: Hendy Irawan
Assignee: Antoine Sabot-Durand
I configured beans.xml like :
{code}
<o:TwitterServiceJackson>
<s:modifies />
<o:OAuthApplication apiKey="****"
apiSecret="****"
callback="http://ceefour.annafi:8080/satukancinta-web/callback.jsf" />
</o:TwitterServiceJackson>
{code}
But this code:
{code}
@Inject private TwitterService twitter;
public void publishTwitterStatus() {
String message = getFbStatusMessage();
log.debug("Updating Twitter status: {}", message);
twitter.updateStatus(message);
}
{code}
causes:
{code}
Caused by: javax.faces.el.EvaluationException:
org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001308 Unable to resolve
any beans for Types: [interface org.jboss.seam.social.oauth.OAuthProvider]; Bindings:
[@javax.enterprise.inject.Any(), @org.jboss.seam.social.Twitter()]
at
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
[jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
at
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
... 30 more
Caused by: org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD-001308 Unable
to resolve any beans for Types: [interface org.jboss.seam.social.oauth.OAuthProvider];
Bindings: [@javax.enterprise.inject.Any(), @org.jboss.seam.social.Twitter()]
at org.jboss.weld.manager.BeanManagerImpl.getBean(BeanManagerImpl.java:707)
[weld-core-1.1.4.Final.jar:2011-11-22 20:01]
at org.jboss.weld.bean.builtin.InstanceImpl.get(InstanceImpl.java:96)
[weld-core-1.1.4.Final.jar:2011-11-22 20:01]
at org.jboss.seam.social.oauth.OAuthServiceBase.getProvider(OAuthServiceBase.java:88)
[seam-social-3.1.0.Final.jar:]
at
org.jboss.seam.social.oauth.OAuthServiceBase.sendSignedRequest(OAuthServiceBase.java:139)
[seam-social-3.1.0.Final.jar:]
at
org.jboss.seam.social.twitter.jackson.TwitterServiceJackson.updateStatus(TwitterServiceJackson.java:97)
[seam-social-twitter-3.1.0.Final.jar:]
at
org.jboss.seam.social.twitter.jackson.TwitterServiceJackson.updateStatus(TwitterServiceJackson.java:45)
[seam-social-twitter-3.1.0.Final.jar:]
at com.satukancinta.ui.admin.UserShowAdmin.publishTwitterStatus(UserShowAdmin.java:262)
[classes:]
at
com.satukancinta.ui.admin.UserShowAdmin$Proxy$_$$_WeldClientProxy.publishTwitterStatus(UserShowAdmin$Proxy$_$$_WeldClientProxy.java)
[classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_147-icedtea]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[:1.7.0_147-icedtea]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[:1.7.0_147-icedtea]
at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_147-icedtea]
at org.apache.el.parser.AstValue.invoke(AstValue.java:262) [jbossweb-7.0.7.Final.jar:]
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
[jbossweb-7.0.7.Final.jar:]
at
org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
[weld-core-1.1.4.Final.jar:2011-11-22 20:01]
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
[weld-core-1.1.4.Final.jar:2011-11-22 20:01]
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
[jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
... 31 more
{code}
I tried to provide my own OAuthSession but doesn't work: (because the access token is
already stored, there's no need to re-authorize every time)
{code}
@Produces @RequestScoped @Twitter public OAuthSession getTwitterSession() {
OAuthSessionImpl session = new OAuthSessionImpl(Twitter.class.cast(Annotation.class));
session.setAccessToken(new OAuthToken() {
@Override
public String getToken() {
return userView.getUser().getTwitterAccessToken();
}
@Override
public String getSecret() {
return userView.getUser().getTwitterAccessTokenSecret();
}
});
return session;
}
{code}
I can get the Twitter instance but cannot do anything with it.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira